我对ssis很新!
我想知道以下内容。
如何使用ssis任务将多个文件加载到sql-server中?
我目前正在开发数据仓库。我有一堆文件,每个文件都在不同的文件夹中
the folders are
Myfolder
->subfolder_21-03-2009.txt
->Mysubfolder_21-03-2009.txt
Myfolder1
->subfolder_22-03-2009.txt
->Mysubfolder_22-03-2009.txt
Myfolder2
->subfolder_23-03-2009.txt
->Mysubfolder_23-03-2009.txt
我可以使用Subfolder.*.txt
加载foreachloop
到sql-server DB(表1)中。
现在有人可以告诉我如何将mysubfolder.*.txt
加载到Sql-server(表2)DB
我想在一个进程中将多个文件加载到sql-server中。
please somebody guide me !
答案 0 :(得分:2)
I am currently working on datawarehouse. i have a bunch of files each in separate folders
看到这个你需要引用这个 answer 你也可以 check this
和 this
this is quite helpful you can take a look here
为了回答上面的问题,你得到了一个接着执行任务的序列容器:
您可能想要提供Mysubfolder。*。txt
在数据流任务中,您可能正在执行此操作
答案 1 :(得分:1)
你们已经拥有了一个" ForEachLoopContainer"在每个文件夹中循环以加载"子文件夹_ * .txt"在表1中。
为什么不创建第二个" ForEachLoopContainer"循环在每个文件夹中加载" Mysubfolder _ * .txt"在表2中?
然后把那些2" ForEachLoopContainer"在序列容器中完成它。
答案 2 :(得分:0)
如果是文件目录。使用ForEach Loop
容器枚举目录中的所有文件;因为你有子文件夹,你必须单击"遍历子文件夹"选项。接下来,您需要在Data Flow Task
容器中添加ForEach Loop
。在Data Flow Task
中,您需要添加Flat File Source
。然后,您需要在Derived Column
之后添加Flat File Source
转换。在Derived Column
中,您需要将用于循环目录的变量添加到"派生列名称&#34 ;;在" Derived Column" put"添加为新列",并在" Expression"您可以使用FindString
表达式或LEFT/RIGHT
表达式的组合来从文件名中获取日期。然后在您的OLE DB Destination
对象中,您需要将派生列映射到SQL-Server DB中的相对列。
FINDSTRING
:http://technet.microsoft.com/en-us/library/ms141748.aspx
LEFT/RIGHT
:http://technet.microsoft.com/en-us/library/hh231081.aspx
答案 3 :(得分:-1)
我想检查将3种不同格式的文件加载到3个单独的表中。假设我有3个文件A,B,C,后缀为日期,并且每天都在变化。这就是我所做的。
创建一个ForEach循环容器并按如下所示设置“收集”选项卡。
让每个文件连接管理器使用表达式使文件名日期部分动态化。
最终包装如下所示。
瞧!这些表是从相应文件加载的。
显然,可以通过使用Foreach File Enumerator在变量中获取文件的完全限定名称,然后编写一个Expression进行解析以将其引导到不同的DFT,来完善此方法。希望这会有所帮助。