SSIS 数据流任务 Excel 到 SQL 表 NULL 值不适用于小 INT 数据类型

Jua*_*lez 5 sql-server ssis

我有一个将 excel 数据导入 SQL 表的包。表中的列之一是“smallint”数据类型,它允许空值。具有假定进入此列的数据的 excel 文件列将始终包含小整数或在某些情况下为“NULL”。

我注意到,当我的源 excel 文件在此特定列中为 NULL 时,我收到以下错误

输入“OLE DB 目标输入”(8459) 上的输入列“服务地点副本”(8582) 出错。返回的列状态为:“由于潜在的数据丢失,无法转换该值。”。

如果我的源 excel 文件只包含小的 int 值,那么包运行良好。我不确定如何解决这个问题。我尝试更改物理表中的数据类型以及使用不同的数据类型(通过 SSIS 中的 DataConversion 组件),但我仍然收到相同的错误消息。

有没有人对我如何解决这个问题有任何想法?即使检查了 SQL 表中的列以允许 NULL,我猜它是从 Excel 源文件中读取 NULL 作为文本或字符串而不是实际的 NULL。有什么建议?

Jua*_*lez 0

我可以通过将目标表列的数据类型更改为 nvarchar,然后将源 excile 文件的数据转换为该列的 nvarchar 来解决此问题。这样,它将数值和单词 NULL 作为字符串导入。我将在包中添加另一个步骤,将字符串“NULL”更改为实际的 NULL 值。

正如上面评论中所指出的,问题在于具有 NULL 值的 Excel 源列被解释为字符串“NULL”,而不是实际的 NULL 值。我希望其他人能有一个更干净的解决方案。