为什么SSIS忽略从Excel源文件导入的最后一列?

我是一名商业智能开发实习生,所以请原谅我,如果我不像SQL或Microsoft BI Stack那样精通。

我试图将数据从Excel文件(.xls)导入到SQL Server数据库表中,出于某种原因,连接pipe理器完全忽略了最后一列数据。

为了使事情变得更加陌生,如果我在Excel中打开Excel文件时尝试在SSIS中设置连接pipe理器,SSIS将读取数据。 (我想我一开始是无意的,结果感到惊讶。)

以下是Excel中未打开文件的数据预览:

在SSIS中设置连接pipe理器之前,打开文件预览数据:

这两个描述文件中的数据结束,但由于某些原因,你可以看到,第一个数据预览中省略了“区域”列。

到目前为止我尝试的步骤:

  1. 使用脚本任务转换为.csv文件
  2. 使用ADO.Net源代码并读取excel数据
  3. 使用SQL命令查看数据而不是从表或表中select
  4. 更改OpenRowset属性以指定列

有关源文件的细节:

  1. 前3行数据是空的(除了图像)
  2. 第4行包含标题数据
  3. “区域”一栏的格式与一般情况一样,每一列不包含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://blog.concentra.co.uk/2013/05/15/why-ssis-always-gets-excel-data-types-wrong-and-how-to-fix-it/

我相信我发现我的问题后,绊倒这篇文章: http : //www.experts-exchange.com/questions/25537245/OPENROWSET-last-column-not-returned-unless-excel-file-manually-saved.html

我想把它发布在任何人都应该遇到这个在未来。