在SSIS中发出导入电子表格的列为null

时间:2018-01-12 14:43:53

标签: sql-server ssis etl ssis-2012

将文件从电子表格导入我们的sql数据库表时,我遇到了一个奇怪的问题。如果任何列的第一行为null,则即使该列的第5行或第10行中有数据,整个列也会在表中反映为null。将.xls数据导入sql server数据库时是否有人遇到此问题?同样,如果该列的第一行不为null,则数据将被正确导入。

1 个答案:

答案 0 :(得分:2)

问题在于,在导出具有混合数据类型列的Excel文件时,它会将非显性类型替换为null。

这不能通过直接方法解决,但根据我的经验,有两种解决方法可以产生良好的效果。

  1. 添加包含abc等随机文本值的虚拟第一行,并将;IMEX=1添加到连接字符串,这将强制excel从第一行读取数据类型,它将将所有数据读为Text

  2. 读取没有标题的Excel文件(在ConnectionString中,您应该有HDR=NO。还要将IMEX=1添加到连接字符串,手动在Excel Source中编写列名称,使用脚本组件跳过第一行(其中包含列标题)

  3. 注意:使用OLEDB或Ace(在Excel连接管理器中使用)提供程序从excel导入数据并不能提供100%的结果,因此这些解决方法是尽可能减少错误