我在一个包含 eid,ename,country 字段的文件夹中有3个csv文件,我的5个csv文件名是test1_20120116_034512,test1_20120116_035512,test1_20120116_035812等。我的要求是我要采取最新的基于timne邮票和修改日期的文件,我已经完成了。现在我想将提取的文件名导入目标表..
我的目标表包含像
这样的字段filepath,filename,eid,ename,country
我之前在同一个网站上发布过关于提取文件名的答案,现在我想将提取的FileName加载到目标表中
我的目标表应该输出为
C:/ source test1_20120116_035812 1234 tester USA
答案 0 :(得分:5)
在DataFlow任务中,添加派生列转换。 CurrentFile的值将是文件的完全限定路径。由于您只需要文件名,我会在基础文件夹上使用替换函数,然后去除剩余的斜杠。这样做不剥离文件扩展名,但您可以添加另一个对REPLACE
的调用并替换空字符串
REPLACE(REPLACE(@[User::CurrentFile], @[User::RootFolder], ""), "\\", "")
以上预计它看起来像
我相信你已经采取了一些我没做过的事情。你应该看到关于可能的截断的警告,但是考虑到这个和前面的问题中讨论的值,我不相信表达式的4k限制会引起关注。
显示派生列
演示派生列确实有效
我会给你+1提供我不知道的方法,但你仍然需要添加一个派生列来匹配你提供的格式(基本路径名)
自定义属性提供完整路径。使用上述REPLACE部分删除路径信息,但使用[FileName]
列代替@[User::CurrentFile]
答案 1 :(得分:3)
我试图通过Billinkc给出的程序获取文件名,但是由于截断错误,它引发了我的错误,说明文件名列失败了。
我是如何尝试不同的方法将文件名加载到表中。
我用过的步骤
1.右键单击平面文件Source并单击show advanced edito for Flat file
2.选择组件属性选项卡
3.在Custom Properties部分里面--->它有一个属性 FileNameColumnName
我已将Filename分配给该列属性,如
FileNameColumnName ----> FileName 就是这样,我能够将文件名放到我的目标表中..