我有一个将 excel 数据导入 SQL 表的包。表中的列之一是“smallint”数据类型,它允许空值。具有假定进入此列的数据的 excel 文件列将始终包含小整数或在某些情况下为“NULL”。
我注意到,当我的源 excel 文件在此特定列中为 NULL 时,我收到以下错误
输入“OLE DB 目标输入”(8459) 上的输入列“服务地点副本”(8582) 出错。返回的列状态为:“由于潜在的数据丢失,无法转换该值。”。
如果我的源 excel 文件只包含小的 int 值,那么包运行良好。我不确定如何解决这个问题。我尝试更改物理表中的数据类型以及使用不同的数据类型(通过 SSIS 中的 DataConversion 组件),但我仍然收到相同的错误消息。
有没有人对我如何解决这个问题有任何想法?即使检查了 SQL 表中的列以允许 NULL,我猜它是从 Excel 源文件中读取 NULL 作为文本或字符串而不是实际的 NULL。有什么建议?
我可以通过将目标表列的数据类型更改为 nvarchar,然后将源 excile 文件的数据转换为该列的 nvarchar 来解决此问题。这样,它将数值和单词 NULL 作为字符串导入。我将在包中添加另一个步骤,将字符串“NULL”更改为实际的 NULL 值。
正如上面评论中所指出的,问题在于具有 NULL 值的 Excel 源列被解释为字符串“NULL”,而不是实际的 NULL 值。我希望其他人能有一个更干净的解决方案。
归档时间: |
|
查看次数: |
7331 次 |
最近记录: |