沙滩星空的博客沙滩星空的博客

Kettle数据迁移到postgresql时出现UTF8编码错误:

问题

用kettle对mysql数据迁移到PostgreSQL时,执行到一半报错:

was aborted: ERROR: invalid byte sequence for encoding "UTF8": 0x00

mysql数据库字符集为 utf8mb4, PostgreSQL字符集为 UTF8, 本以为是不兼容的字符导致。故编辑目标库的 DB连接 -> 选项, 设置命名参数 characterEncoding 值为 uft8. 然而并无效果。

原因

invalid byte sequence for encoding "UTF8": 0x00(注意:若不是0x00则很可能是字符集设置有误),是PostgreSQL独有的错误信息,因为PostgreSQL内部采用C语言风格的字符串(以0x00)表示结尾,varchar型的字段或变量不接受含有'\0'(也即数值0x00、UTF编码'\u0000')的字符串 。

解决

替换掉 0x00 字符

# JAVA
str..replace("\u0000", "").replace("\\u0000", ""));

# SQL
SELECT replace(review_content, char(0), '') as 评论内容 [FROM reviews_table]

一次倍受折磨的“invalid byte sequence for encoding "UTF8": 0x00”事件的经验教训 https://www.cnblogs.com/cjkcss/articles/11774051.html
kettle:ERROR: invalid byte sequence for encoding “UTF8”: 0x00 https://blog.csdn.net/chulang3290/article/details/100759073
ERROR: invalid byte sequence for encoding "UTF8": 0x00与java中\u0000处理 https://www.modb.pro/db/88526
使用kettle抽取数据出现中文乱码问题解决 https://blog.csdn.net/sunfly01/article/details/107689093
未经允许不得转载:沙滩星空的博客 » Kettle数据迁移到postgresql时出现UTF8编码错误:

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址