【发布时间】:2020-06-01 18:38:47
【问题描述】:
我首先说我已经安装了 SQL Server Express Advance 2014。我想将数据从 csv 文件导入 SQL Server。为此,我选择一个数据库,选择任务,选择导入数据。然后,对于数据源,我选择平面文件。对于目标,我选择 SQL Server Native Client 11.0。对于目标表,我选择由 SQL Server 导入和导出向导自动生成的表,即在导入数据之前我没有创建表,它是在我在此窗口中时创建的。数据导入结束时会显示一条消息,指出行已被传输:已传输 43 157 行(我的 csv 文件中的总行数)。
在查询中,当我编写“从该表中全选”时,在结果中,我实际上看到了一个包含 43157 行的表。但是,并非我的所有数据都已复制。我意识到这一点是因为我将 csv 文件的第一行和最后一行与结果部分中出现的表格的行进行了比较。第一行没有问题,至少前 100 行是这样。但是最后一行,即SQL表中出现的第43 157行是csv文件中的第40 475行。因此,SQL 中的该表具有与原始源相同的行数,但它不包含所有数据。
我重复了这个导入数据的过程,看看这次是否在另一个新表(也是自动生成的)中复制了所有数据。它没有发生,但在这个表中出现了 826 行,比上一张多出 826 行。我的意思是,SQL 表中的第 43157 行现在与 csv 文件中的第 41 301 行重合。我重复了这个过程,它再次出现了比上一张表多 826 行。我有一个模式!,我认为。所以我继续这样,直到所有的数据都被复制完。实际上,在第 n 次尝试中,SQL 中第 n 个表中的最后一行与 csv 文件中的最后一行重合。但到此为止,我完全把注意力集中在最后几行发生的事情上,而我没有注意到的是,现在我的第一行是错误的!例如,我最后一个 SQL 表中的第一行是我的 csv 文件中的第 2479 行。这是怎么回事?
如您所见,我是 SQL Server 的新手,所以我希望对初学者的解释不会太激进。提前致谢。
【问题讨论】:
-
天哪!近一个星期以来,我一直试图弄清楚发生了什么。谢谢,我从来没有想过行会乱七八糟。
标签: sql-server csv import