0

我们想再次探索使用 SQL SSIS 2005 导入,其中 CSV 文件为每行分隔不同的列数。IE。

假设前 3 行:

"1", "FirstName1", "LastName1"
"2", "FirstName2", "LastName2"
"3", "FirstName3", "LastName3"

4-5行:

"210", "Crows st", "Melbourne", "VIC"
"212", "Cr st", "Melbourne", "VIC"

其他:

"100", "Activities 1"
"101", "Activities 2"

我们所做的唯一方法是,如果数据少于 100 万行,我们可以导入 Excel,然后导出为 CSV 或制表符分隔并导入 SQL Server。或者,如果超过 100 万条记录,我们可以导入 Ms Access 2007/2010 并重新导入 SQL(假设数据不超过 2GB)。这些类型的解决方案效果很好!!!

有没有直接针对 SQL 的解决方案?我们仍在使用 Ms SQL Server 2005 BTW。我们之所以问,是因为 Ms Access 的大小有 2GB 的限制,而我们的数据超过 2GB !!!当然,我们可以根据行数拆分此文件,但我们发现非常混乱。

期待输入。

谢谢

4

2 回答 2

0

你可以做到,但这很复杂,我能做的最好的事情就是为你指明正确的方向。它涉及使用源类型的脚本组件和指向每个不同目标的条件拆分。脚本组件将读取数据并创建源行。在这样做的同时,它会创建一个名为“RowType”的额外列,条件拆分对象将使用该列。

希望有帮助,祝你好运!

于 2013-02-14T20:40:49.190 回答
0

由于文件中的三组数据似乎是三个不同的实体(客户、地址、活动),我假设您希望在流程结束时将它们放入三个不同的表中。这意味着无论如何都会发生拆分数据,这只是您在加载过程中在哪里进行的问题。

我的方法是使用一个小脚本(Python、Perl、PowerShell 等)将文件拆分为三个单独的文件。您可以从 SSIS 包中调用脚本,以将所有工作流集中在一个地方。之后,您只需将三个连接器添加到您的包并将数据加载到您想要的任何表中。

于 2013-02-14T18:58:02.410 回答