当我使用gpload将某些数据转储到greenplum中时,由于以下错误而失败:“错误:编码“ UTF8”的字节序列无效:0xe5b82e”。
我做了一些搜索。我的greenplum是5.18.0,“ show client_encoding”显示为“ UTF8”,当我使用“ file”命令检查数据文件时,它也显示为:text / plain; charset = utf-8。这就是让我感到困惑的地方:数据文件是utf8,客户端也是utf8,为什么会引发此类错误?我未能在此字符串中找到一些\ x0或\ u0000字符,这是某些帖子中相同问题的关键问题。
我发现一个链接似乎与此问题有关:https://jira.pentaho.com/browse/PDI-6191 这个greenplum版本真的是一个错误吗?
关于数据文件的另一件事是带有'|'的文本文件作为分隔符,其内容如下:
|Hibernate operation: could not insert: [net.xiaofei.apps.wbps.channel.entity.IntSoapContent]; uncategorized SQLException for SQL [insert into int_soap_content (case_id, casetype, channel, content, create_time, handle_flag, handle_time, srccaseid, subcasetype) values (?, ?, ?, ?, ?, ?, ?, ?, ?)]; SQL state [HY000]; error code [1366]; Incorrect string value: '\xF0\xA1\x8D\xB2\xE5\xB8...' for column 'content' at row 1; nested exception is java.sql.SQLException: Incorrect string value: '\xF0\xA1\x8D\xB2\xE5\xB8...' for column 'content' at row 1|20190818
感谢您的帮助!
我不想为此帖子开始新的话题,所以我在这里显示步骤:
创建表测试(id bigint,结果文本)WITH(appendonly = true, compresstype = quicklz,orientation = column)(ID);
`
5661083 |休眠操作:无法插入: [net.xiaofei.apps.wbps.channel.entity.IntSoapContent];未分类 SQL的SQLException [插入int_soap_content(case_id,casetype, 频道,内容,create_time,handle_flag,handle_time,srccaseid, subcasetype)值(?,?,?,?,?,?,?,?,?)]]; SQL状态[HY000]; 错误代码[1366];字符串值不正确: 第1行的'内容'列的'\ xF0 \ xA1 \ x8D \ xB2 \ xE5 \ xB8 ...';嵌套的 异常是java.sql.SQLException:不正确的字符串值: '\ xF0 \ xA1 \ x8D \ xB2 \ xE5 \ xB8 ...'位于第1行的'content'列
`
VERSION: 1.0.0.1 DATABASE: test USER: userXXX PASSWORD: passYYY HOST: ip1.ip2.ip3.ip4 PORT: 3421 GPLOAD: INPUT: - SOURCE: LOCAL_HOSTNAME: - ip1.ip2.ip3.ip4 PORT: 6006 FILE: - /tmp/gpdb_test/test/* - COLUMNS: - id: integer - result: text - FORMAT: text - DELIMITER: '|' - ESCAPE: OFF - NULL_AS: '\N' - ERROR_LIMIT: 0 OUTPUT: - TABLE: test - MODE: INSERT PRELOAD: - TRUNCATE: true SQL: - BEFORE: "INSERT INTO gpload_audit VALUES(nextval('gpload_audit_seq'), 'start', 'insert', 'test', current_timestamp)" - AFTER: "INSERT INTO gpload_audit VALUES(nextval('gpload_audit_seq'), 'end', 'insert', 'test', current_timestamp)"
2019-08-20 10:27:14|INFO|gpload session started 2019-08-20 10:27:14 2019-08-20 10:27:14|INFO|setting schema 'public' for table 'test' 2019-08-20 10:27:19|INFO|started gpfdist -p 6006 -P 6007 -f "/home/work/gpdb_test/test/*" -t 30 2019-08-20 10:27:20|ERROR|ERROR: invalid byte sequence for encoding "UTF8": 0xe5b82e (seg9 slice1 10.136.173.8:33001 pid=339845) DETAIL: External table ext_gpload_05bdc0fe_c2f2_11e9_bb6b_246e9677a1f0, line 1 of gpfdist://10.136.157.44:6006//home/work/gpdb_test/test/*: "5661083|Hibernate operation: could not insert: [net.xiaofei.apps.wbps.channel.entity.IntSoapContent]..." encountered while running INSERT INTO public."test" ("id","result") SELECT "id","result" FROM ext_gpload_05bdc0fe_c2f2_11e9_bb6b_246e9677a1f0 2019-08-20 10:27:20|INFO|rows Inserted = 0 2019-08-20 10:27:20|INFO|rows Updated = 0 2019-08-20 10:27:20|INFO|data formatting errors = 0 2019-08-20 10:27:20|INFO|gpload failed
答案 0 :(得分:0)
首先,请确保源文件的编码是什么。 其次,如果您有权访问该文件,请运行“ locale; grep -axv file.txt”。如果返回某些内容,则意味着您的文件包含无效的字节序列或文件已损坏。 第三,您可以使用iconv修复/跳过无效的序列字节,或者返回源以获取正确的编码。