SQL Server导入和导出向导(SQL Server Express)

时间:2014-10-19 03:09:37

标签: csv import sql-server-express

所以我很想输入一个CSV文件。最终目标是创建可重复的流程来导入文件。我能够导入文件的唯一方法是使用MS Access(导入到Access然后导出到SQL Server)的迂回方式,它很愉快,愉快地没有问题。

但是,SQL Server(Express或其他)肯定也应该能够导入它。

此处的文件不在野外:http://ourairports.com/data/,具体为:http://ourairports.com/data/airports.csv

这是一个很好的数据集(现实世界数据),我有设计规范化它,把它带入SSRS,什么不是,主要是学习和有东西来展示'未来的雇主。

但如果文件导入没有错误,我会被诅咒。理想情况下,列将适当地导入和转换,即数字列应该在定义为Int或最合适的表中结束。

我看到的最常见的错误是:

Data conversion failed. The data conversion for column "wikipedia_link" returned status value 4 and status text "Text was truncated or one or more characters had no match in the target code page."

理想情况下,我想通过T-SQL和批量插入导入文件,但也有类似的问题。

也许如果有人可以看一眼,看看会发生什么事情,理想情况下,我在这里学到一些东西,而不是只是寻找快速答案,除非我当然只是做一些像傻瓜这样的事情。忘记了一个复选框。

由于

1 个答案:

答案 0 :(得分:0)

哇,我花了一段时间才弄明白这里发生了什么!

基本上,它通过了验证步骤,因为SQL查看映射并将表中列的数据类型与csv的前几行进行比较。 (我相信前8行。)

在这种情况下,前8行都是空白的!这意味着SQL没有问题,因为没有数据可供检查。

然后,你进入导入,SQL用链接命中第一行(第41行),然后打破验证。

不幸的是,您无法更改列的数据类型并希望它能够正常工作,因为它确实没有。 (谢谢微软!)

这里的一个解决方案是将一个(理想情况下全部)带有Wiki链接的行放到电子表格的顶部并重新导入。

修改

AHHA!真正的解决方案!有一个注册表项更改,用于设置excel验证的行数。将此值更改为零会使检查器查看前16,000行。

您需要将以下注册表项更改为零:

32 Bit Machine:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel\TypeGuessRows

64 Bit Machine:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Jet\4.0\Engines\Excel\TypeGuessRows