数据库为postgresql, 执行sql的where 条件出现了乱码,请问这种情况一般需要如何处理的~?
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 ('Fyay8-7ygQ7iQM73`{g7 |d3k' <= id AND id < 'H)M&&K MS:^zC
因为你配置的splitPk字段是字符串类型,这是正常现象,代码逻辑就这样的.
修改建议:
- splitPk字段是数字类型[PS:强烈建议设置splitPk为数字类型].
- splitPk字段是字符串类型,但需保证该字段的字符集是大小写敏感的,不然会出问题,会导致你同步的数据不对,比如你原表只有100条数据,但最终却有120条入库.
- 不使用splitPk字段,此时任务不会切分,可能运行时间长.
该现象是这个类导致的 common/src/main/java/com/alibaba/datax/common/util/RangeSplitUtil.java 问题出在stringToBigInteger()和bigIntegerToString()这两个方法上.
(自动回复)邮件已收到,谢谢。
因为你配置的splitPk字段是字符串类型,这是正常现象,代码逻辑就这样的.
修改建议:
- splitPk字段是数字类型[PS:强烈建议设置splitPk为数字类型].
- splitPk字段是字符串类型,但需保证该字段的字符集是大小写敏感的,不然会出问题,会导致你同步的数据不对,比如你原表只有100条数据,但最终却有120条入库.
- 不使用splitPk字段,此时任务不会切分,可能运行时间长.
该现象是这个类导致的 common/src/main/java/com/alibaba/datax/common/util/RangeSplitUtil.java 问题出在stringToBigInteger()和bigIntegerToString()这两个方法上.
嗯嗯,谢谢你 。 可不可以指定其他数字类型唯一键作为任务切分的条件噶?
你看下这个文档的说明 postgresqlreader/doc/postgresqlreader.md
splitPk仅支持整型(bigint, bigserial, integer, smallint, serial),不支持浮点类型,字符串,日期等类型.
ok, 感谢你的答复~
我来挖坟了。。。 mysql下 测了下主键id为 varchar 的 uuid 发现当都为大写时,比如 00293063EC8D48059FB32FD86DDC7C4F 竟然导出的数据量是准的。。。。 但是 ,我测试表填充的是小写uuid时,的确数据量不一致。
(自动回复)邮件已收到,谢谢。