DataX 数据库为postgresql, 执行sql的where 条件出现了乱码,请问这种情况一般需要如何处理的~?

kmpatx3s  于 4个月前  发布在  PostgreSQL
关注(0)|答案(7)|浏览(173)

com.alibaba.datax.common.exception.DataXException: Code:[DBUtilErrorCode-06], Description:[执行数据库 Sql 失败, 请检查您的配置的 column/table/where/querySql或者向 DBA 寻求帮助.]. - 执行的SQL为: select image_count,scan_time,create_time,id from acceptance where ('F�y�ay8�-7y�gQ7i�QM73`{g7 |�d3�k' <= id AND id < 'H)M&��&K �M�S��:^zC�

nwnhqdif

nwnhqdif1#

因为你配置的splitPk字段是字符串类型,这是正常现象,代码逻辑就这样的.

修改建议:

  1. splitPk字段是数字类型[PS:强烈建议设置splitPk为数字类型].
  2. splitPk字段是字符串类型,但需保证该字段的字符集是大小写敏感的,不然会出问题,会导致你同步的数据不对,比如你原表只有100条数据,但最终却有120条入库.
  3. 不使用splitPk字段,此时任务不会切分,可能运行时间长.

该现象是这个类导致的
common/src/main/java/com/alibaba/datax/common/util/RangeSplitUtil.java
问题出在stringToBigInteger()和bigIntegerToString()这两个方法上.

nbewdwxp

nbewdwxp2#

(自动回复)邮件已收到,谢谢。

z4bn682m

z4bn682m3#

因为你配置的splitPk字段是字符串类型,这是正常现象,代码逻辑就这样的.

修改建议:

  1. splitPk字段是数字类型[PS:强烈建议设置splitPk为数字类型].
  2. splitPk字段是字符串类型,但需保证该字段的字符集是大小写敏感的,不然会出问题,会导致你同步的数据不对,比如你原表只有100条数据,但最终却有120条入库.
  3. 不使用splitPk字段,此时任务不会切分,可能运行时间长.

该现象是这个类导致的 common/src/main/java/com/alibaba/datax/common/util/RangeSplitUtil.java 问题出在stringToBigInteger()和bigIntegerToString()这两个方法上.

嗯嗯,谢谢你 。 可不可以指定其他数字类型唯一键作为任务切分的条件噶?

p4tfgftt

p4tfgftt4#

你看下这个文档的说明
postgresqlreader/doc/postgresqlreader.md

splitPk仅支持整型(bigint, bigserial, integer, smallint, serial),不支持浮点类型,字符串,日期等类型.

ej83mcc0

ej83mcc05#

ok, 感谢你的答复~

thigvfpy

thigvfpy6#

我来挖坟了。。。 mysql下 测了下主键id为 varchar 的 uuid 发现当都为大写时,比如 00293063EC8D48059FB32FD86DDC7C4F 竟然导出的数据量是准的。。。。 但是 ,我测试表填充的是小写uuid时,的确数据量不一致。

ujv3wf0j

ujv3wf0j7#

(自动回复)邮件已收到,谢谢。

相关问题