使用 SSIS 从 Excel 导入大列(8000 个字符)

Ken*_*her 7 sql-server etl ssis sql-server-2008-r2 excel

我正在尝试设置定期导入我们从供应商处获得的 Excel 电子表格。我正在使用 SQL 2008 R2 SSIS 将其导入表中。问题连接管理器是到电子表格的 OLE DB 连接。电子表格是 Excel 2005。数据库连接管理器使用 Native OLE DB\SQL Native Client。

我遇到的问题是 OLE DB 源不断将几个 excel 列设置DT_WSTR为一个255长度。但是,我有 2 列,分别为 4000 和 8000 个字符。我已经进入OLE DB 源的Advanced Editor/Input and Output Properties选项卡并更改了External Columns列表和Output Columns列表中的数据类型/长度。不幸的是,当我离开时Advanced Editor,错误列表中会出现错误。

Validation error. Data Flow Task: Data Flow Task: The output column "ColumnName" (226)
on the error output has properties that do not match the properties of its 
corresponding data source column.
Run Code Online (Sandbox Code Playgroud)

当我再次单击源时,我会得到一个选项来自动“修复”错误。然后我选择“是”和“确定”。错误现在消失了,但是当我回到External Columns数据类型/长度设置时,它又回到了原来的DT_WSTR/255.

我可以手动将电子表格更改为带分隔符的文件以避免出现问题,但我不想在流程中添加手动步骤。有谁知道获取 Excel 源以允许长列的方法?

Ken*_*her 5

我们终于解决了这个问题。事实证明,SSIS 根据 excel 文件中的前几行计算长度。当我们将数据较长的行移到顶部时,列更改为 unicode 文本(允许额外的长度)。