如何在ssis中加载多个文件

时间:2014-03-28 16:28:24

标签: sql-server ssis

我对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 !

4 个答案:

答案 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

为了回答上面的问题,你得到了一个接着执行任务的序列容器:

快照1

Snap shot1

快照2

您可能想要提供Mysubfolder。*。txt

Snap shot2

快照3 enter image description here

在数据流任务中,您可能正在执行此操作

答案 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中的相对列。

FINDSTRINGhttp://technet.microsoft.com/en-us/library/ms141748.aspx

LEFT/RIGHThttp://technet.microsoft.com/en-us/library/hh231081.aspx

答案 3 :(得分:-1)

我想检查将3种不同格式的文件加载到3个单独的表中。假设我有3个文件A,B,C,后缀为日期,并且每天都在变化。这就是我所做的。
Image 1

创建一个ForEach循环容器并按如下所示设置“收集”选项卡。
Image 2

让每个文件连接管理器使用表达式使文件名日期部分动态化。
Image 3

最终包装如下所示。
Image 4

瞧!这些表是从相应文件加载的。
Image 5

显然,可以通过使用Foreach File Enumerator在变量中获取文件的完全限定名称,然后编写一个Expression进行解析以将其引导到不同的DFT,来完善此方法。希望这会有所帮助。