使用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列。