为什么SSIS忽略从Excel源文件导入的最后一列?
我是一名商业智能开发实习生,所以请原谅我,如果我不像SQL或Microsoft BI Stack那样精通。
我试图将数据从Excel文件(.xls)导入到SQL Server数据库表中,出于某种原因,连接pipe理器完全忽略了最后一列数据。
为了使事情变得更加陌生,如果我在Excel中打开Excel文件时尝试在SSIS中设置连接pipe理器,SSIS将读取数据。 (我想我一开始是无意的,结果感到惊讶。)
以下是Excel中未打开文件的数据预览:
在SSIS中设置连接pipe理器之前,打开文件预览数据:
这两个描述文件中的数据结束,但由于某些原因,你可以看到,第一个数据预览中省略了“区域”列。
到目前为止我尝试的步骤:
- 使用脚本任务转换为.csv文件
- 使用ADO.Net源代码并读取excel数据
- 使用SQL命令查看数据而不是从表或表中select
- 更改OpenRowset属性以指定列
有关源文件的细节:
- 前3行数据是空的(除了图像)
- 第4行包含标题数据
- “区域”一栏的格式与一般情况一样,每一列不包含date
如果有人有任何想法或build议,我会非常感激的反馈意见。
谢谢!
有时SSIS无法检测给定列的数据types。 这可能会导致意外的NULL。 将IMEX = 1添加到ConnectionString可清除此故障。
示例Provider = Microsoft.Jet.OLEDB.4.0; Data Source = Your_Workbook.xls;扩展属性=“EXCEL 8.0; HDR = NO;”;
变
Provider = Microsoft.Jet.OLEDB.4.0; Data Source = Your_Workbook.xls; Extended Properties =“EXCEL 8.0; HDR = NO; IMEX = 1 ”;
欲了解更多详情,请参阅此博客文章(不是我自己的工作):
我相信我发现我的问题后,绊倒这篇文章: http : //www.experts-exchange.com/questions/25537245/OPENROWSET-last-column-not-returned-unless-excel-file-manually-saved.html
我想把它发布在任何人都应该遇到这个在未来。