首页 > 解决方案 > 数据工厂复制数据mssql到postgresql十进制数值数据转换错误

问题描述

我正在尝试使用数据工厂将数据从 mssql 数据库迁移到 postgresql 数据库。

但我在小数/数字字段中出现错误。我该如何解决这个问题?

Error:
Error code
2200
Troubleshooting guide
Failure type
User configuration issue
Details

**'Type=Npgsql.PostgresException,Message=22P02: invalid input syntax for type numeric: "0,833",Source=Npgsql,'**

Azure 错误

标签: sqlpostgresqlazureazure-data-factory

解决方案


我有一个问题,源数据类型是什么?如果它是十进制/数字数据类型并且有像'0,833'这样的数据,一定是错误的。

所以我假设它是源中的字符串数据,而目标数据类型是 PostgreSQL 中的数字。

由于您的源是 MSSQL,您可以只使用一个Replace()函数将“0,833”转换为“0.833”:

select a, replace(a,',','.') convert_a, test.b from test

在此处输入图像描述

将查询放在源查询选项中: 在此处输入图像描述

更新:

另一种方式,您可以使用数据流派生列表达式来更改数据replace(a, ',', '.')::

在此处输入图像描述

在此处输入图像描述

请在源投影中将数据类型设置为字符串。或者先将其转换为字符串数据:replace(toString(a), ',', '.').

HTH。


推荐阅读