【问题标题】:MS SQL Server SSIS Import error decimal valueMS SQL Server SSIS 导入错误十进制值
【发布时间】:2019-07-02 16:09:16
【问题描述】:

我有以下 csv 文件

Column
2,3
2,4

每次通过 SSIS 包导入数据时,我都会因为逗号值而出错。当我将 2,3 和 2,4 更改为 2.3 和 2.4 时,它工作正常。并且这些值将与 2,3 和 2,4 正确存储到表中。

对于导入,我使用 Codepage 1252 ANSI-Lateinisch I,并且 db 中的字段是十进制 (18,2)。

我的导入有什么问题?有任何想法吗?

谢谢

【问题讨论】:

  • 虽然看你的小例子,但它看起来不正确。您只声明 1 个标头 (Column),但两行都有 2 个值(对于第一行 2 3)。逗号 (,) 是分隔符。也许您的意思是引用您的价值观"2,3"
  • 那么,您使用逗号作为小数分隔符吗?开始时 csv 是错误的。
  • @Flamms,您会收到错误,因为逗号被认为是默认的列分隔符,而点是小数点分隔符。这就是为什么 CSV 代表“逗号分隔值”

标签: sql-server csv ssis etl flat-file


【解决方案1】:

您在问题中提到了错误原因:

当我将 2,3 和 2,4 更改为 2.3 和 2.4 时,它工作正常。并且这些值将与 2,3 和 2,4 正确存储到表中。

这意味着, 导致了该问题。检查没有用作分隔符。

在平面文件连接管理器中,转到高级选项卡,选择列并更改列分隔符属性。

如果是该行的最后一列,将分隔符更改为{CRLF}

如果文件中有很多列并且分隔符是逗号,,那么您必须将其替换为. 或使用添加文本限定符。

解决方法

如果仍然不起作用,请将列类型更改为 DT_STR,然后在 Data flow task 添加派生列,将 , 替换为 , 并将值转换为十进制。示例:

(DT_DECIMAl,2)REPLACE([COLUMN], ",", ".") 

【讨论】:

    【解决方案2】:

    在您的 csv 连接管理器中,将列分隔符更改为 {CrLf} 字符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-18
      • 1970-01-01
      • 2011-02-04
      • 1970-01-01
      • 1970-01-01
      • 2014-02-27
      • 1970-01-01
      相关资源
      最近更新 更多