使用SSIS导入空白Excel列

我正在创build一个SSIS包来将Excel文件(具有不同的布局)导入到具有150列的SQL Server表中。

SSIS包中有一个Foreach循环容器,其中是一个数据stream任务,它具有一个Excel源组件和一个OLE DB目标组件。

数据stream任务将为每个Excel文件运行,因此Excel Source组件需要为每个文件工作。

我已经设置了150个Unicodestring列的长度为255的Excel Source组件,并且我已经将ValidateExternalMetadata设置为False,但是我收到错误:testing时发现“列”F143“在数据源中找不到”打包在具有142列数据的Excel文件上。

我的问题是:如何让程序包忽略这个错误并导入存在的列,或者是否有另一种处理上述情况的方法?

打开Excel Source任务的编辑器。 在左侧窗格中,select“错误输出”。 在列窗格下方是一行,在其旁边的下拉列表中显示“将此值设置为选定单元格:”。 从下拉菜单中select“忽略失败”。 现在转到列窗格,并select“错误”列下的所有150行,然后点击下拉框旁边的“应用”。 这应该将所有Excel列设置为“忽略错误”。 点击“确定”,然后你应该很好去。

在Excel源中,select源types作为SQL command并使用以下命令(假定工作表名称为Sheet1

 Select * from [Sheet1$A1:ET] 

ET是index = 150的列,因此使用此查询,您将强制Excel Source读取150列,即使它们包含一些空列。


有关使用dynamic头导入excel的更多信息,请按照以下我的答案:

  • 导入具有可变标题的Excel文件

尝试在Excel源中使用以下sql命令

 SELECT * FROM [Sheet1$A1:B] 

用B代替第150列。