2011-04-19 70 views
1

我第一次巴陵实现在SSIS平面文件数据到多个表使用SSIS

我有像4.5 GB的数据我的任务,我想上传到SQL Server 2008中。 我的数据就像是4到6个数据表的组合,原始数据中没有主键。含的信息

的多个表

一行现在我需要在到各表来分割该数据。

我的数据是这样的

ROW1:COL1,COL2,COL3 ........... col125

现在我已经掌握表中插入某些列,如果我插入到主表中的记录我必须得到最后插入的行ID,并使用该ID我必须插入coloumns的原始数据(COL5到col20等)到另一个表像..

最后插入的行是5

表1 5,col2 5,COL3 5,COL4 5,COL5并且具有插入另一个表

表3 5,COL12 5,col32 5,col45 5,col55

表4 5,col72 5,col82 5,col95 5,col105与第一行相同。

任何人都可以告诉我如何实现这个任务。请参阅已附加的文件(http://www.bidn.com/Assets/Uploaded-CMS-Files/fc8b892d-8652-4f0e-bdc6-56e297149315Table Extract.pdf

回答

2

我会提出一个带有Dataflow的SSIS包,仅将源文件上载到文件的临时表版本中。此时,我的包会调用一个执行SQL任务,这将启动一个非常大的存储过程来完成所有主/子工作。

如果性能不是非常重要,那么在存储过程中,创建一个游标来读取每一行,通过痛苦的行,并在表1中执行插入操作。捕获scope_identity()值(在您的示例中为5)并使用并将其余列插入到表2-6中。泡沫,冲洗,重复。

更好的性能方法是对该数据执行基于集合的操作。这种模式需要更多的技巧才能完成,但完全可行。代替游标,将所有行插入到表1中。要捕获所有插入的标识值,您需要将OUTPUT子句用于表变量之类的东西。此时,您在输入行(第1行= id 5,第2行= id 6等)之间有映射,并且可以在基于游标的方法中执行相同的插入操作,不同的是使用列而不是变量。

如果你绝对必须使用SSIS的方式,你有我的哀悼。光标图案可以应用于那里,具有类似的性能结果。加载到数据流中的对象类型的SSIS变量,而不是加载到登台表。创建126或任何变量在包中,然后shred the recordset