【发布时间】:2013-02-14 18:37:58
【问题描述】:
我们想再次探索使用 SQL SSIS 2005 导入,其中 CSV 文件的每行分隔的列数不同。即。
假设前 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 !!!当然,我们可以根据行数拆分这个文件,但我们发现非常混乱。
期待输入。
谢谢
【问题讨论】:
-
第 1-3、4-5 和 6 行之间是否存在必须维护的关系?
-
数据相关。像这样认为我们从供应商那里获得的数据就是这样 - 他们基本上将几个表转储到 1 个文件中。我们无法访问实际来源 - 因此我们必须处理这些组合数据。
-
它是相关的,但我们是否需要将第 1 行与“Crows St”行联系起来,如果是这样,我们可以使用那个前导数字,还是这将是第 1 行的序数位置A 部分的第 1 行与 B 部分的第 1 行等相关吗?
-
您为什么不编写一个简单的 C# 命令行应用程序来解析文件并根据有多少列构建适当的语句?我假设这些数据将进入不同的表?
-
其实这个练习的目的是把这个文件转储到一张表中。然后我们将手动分析数据 - 所以数据的关系是不关心的。分析师可能会根据行 x 到 y 查询数据,这意味着等等 - 他们必须自己标记。
标签: sql-server sql-server-2005 ssis