0

我使用 SQL Server 在本地存储数据以进行统计分析。我从通常有数百列的 csv 文件创建我的表。手动指定列名和类型会很乏味,所以我在导入向导中使用“建议类型”来选择正确的类型。

这在大多数情况下都有效,但我的 csv 文件经常有一个“参差不齐的顶部边缘”(即,前一千或一百万行的很多列都是空的——其中很多文件都是 1+ gb,因此需要 SQL Server 来促进子集连接)。因为导入向导最多只能查看前 1000 行,所以我的导入可能会失败。有没有聪明的解决方法?

我能想到的解决方案是将最后一千左右的行移动到文件的顶部,就在标题行的下方。但由于其中一些文件是 1+ gb 的数百万行,我无法在文本编辑器中执行此操作。有没有办法让导入向导更聪明?还是倒着读?或者移动最后一千行左右?

谢谢!

4

2 回答 2

0

您可以指定要跳过的标题行,直到获得预期结果。

我将增加标题行以跳过 1000 左右,然后减少它以确保我没有错过任何东西,直到我可以得到一个体面的数据预览。没有在这么大的文件上试过这个,但不明白为什么它不能在一台像样的机器上工作。

如果您想要一些不那么乏味的东西,一个简单的批处理文件或控制台应用程序可以从这些文件中删除空格。只要确保它使用正确的文本阅读器方法来确保它读取单行而不是尝试将整个文件加载到内存中。

于 2011-06-08T19:26:41.983 回答
0

看起来您无法在向导中进行设置,但如果您将其作为完整的 SSIS 解决方案进行设置,则可以。和/或 1000 的行限制是 SQL Server 2008 中的一个错误(不确定 R2)

看到这个了解更多

我在某个时候自己设置了这个示例行,但不记得我何时以及使用了什么版本/SP 级别。

于 2011-06-08T19:31:53.953 回答