SQL链接服务器与Excel导入值为NULL

我已成功地使用链接的服务器与SQL Server Management Studio从Excel导入文件有四列。

Excel文档看起来像(没有工具是指空白单元格,第6-199行)

TDS HOLDER TOOL 1 3 1187 2 4 09812 3 5 9082 4 2 ---- 5 76 ---- 6 9 7 1 . . . . . . 200 18 CT-2989 201 98 CT-9871 

当我按原样导入时,它将抓取包含------单元格的顶部的单元格,然后当它到达空白的单元格时,它将为其余的数据打印NULL ,这是不正确的。

当我改变我的Excel文档,使“CT”值在最上面时,它将获取第3列中所有正确的CT和TL值。

问题出在SQl服务器导入和导出向导。 它使用电子表格的前几行中的数据来决定每列中的数据types。 当您的工具列的顶部有数字时,向导将决定该列的数据types为浮点数。 当列上有“CT-2989”时,它select一个字符types。 一旦select了浮点types,它将忽略CT-2989,因为它不能转换为浮点数。 解决这个问题的最简单的解决方法是在顶部放置一个虚拟行的Excel电子表格,为向导提供每列的正确types。 例如,在“工具”列中创build第一个数据单元“abcdefg”,假定该列中的其余数据由最多7个字母数字字符组成。 一旦你的数据已经导入SSMS,删除虚拟行。

如果进入向导的“审阅数据types映射”页面,将显示当数字数据位于电子表格顶部时,“工具”列已被检测为包含浮点数据。 请注意,即使“工具”列的目标types是nvarchar,向导也会自行决定源types。

还有其他的解决scheme,使用openrowset()和SSIS,但是这个快速而简单。