【问题标题】:nvarchar(max) to decimal(24,6) results in NULL other conversions failnvarchar(max) 到 decimal(24,6) 导致 NULL 其他转换失败
【发布时间】:2015-01-30 08:14:40
【问题描述】:

当前通过 SSIS 将数据加载到临时表中,所有字段都设置为 nvarchar(max)(由于传入数据的质量差,例如日期和数字字段中的文本)。然后将数据传输到具有适当数据类型集的第二个表中。

问题是,为什么当我尝试将其合并到第二个表中的 date() 字段时,第一个表中存储为 nvarchar(MAX) 的文本会失败。然而,当我将第一个表中的文本合并到第二个表中的小数(24,6)时,它会导致 NULL?

有没有办法让这两个场景表现一致?

【问题讨论】:

  • 你能展示一些示例数据吗?为什么这会被 MySQL 放大?
  • 能否包含一些用于将数据从第一个表移动到第二个表的 SQL。
  • 刚刚尝试生成一些示例,并且该过程已在 3 个不同的文件上以 3 种不同的方式处理了不正确的数据类型。我怀疑它与 SSIS 在首次加载时最初识别数据类型的方式有关(取决于不正确的数据类型有多远)。如果需要,我会检查一下并重新发布一个带有完整示例和代码的新问题。谢谢。

标签: sql-server ssis


【解决方案1】:

Nvarchar(max) 在 SSIS 管道缓冲区中变为 DT_NTEXT。 Nvarchar(max) 是一种对象类型,因此请查看您尝试插入的变量/转换的类型。有些转换是不可能的。

看看here

【讨论】:

    猜你喜欢
    • 2014-07-07
    • 1970-01-01
    • 2017-12-25
    • 1970-01-01
    • 1970-01-01
    • 2019-03-06
    • 2017-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多