文档首页/ 数据仓库服务 GaussDB(DWS)/ 故障排除/ 数据导入/导出/ 使用COPY FROM导入时报错“invalid byte sequence for encoding "UTF8": 0x00”
更新时间:2024-07-01 GMT+08:00

使用COPY FROM导入时报错“invalid byte sequence for encoding "UTF8": 0x00”

问题现象

使用COPY FROM导入GaussDB(DWS)时,报错: “ invalid byte sequence for encoding "UTF8": 0x00.”。

原因分析

业务数据文件从Oracle导入,文件编码为utf-8。该报错还会提示行数,由于文件特别大,vim命令打不开文件,于是用sed命令把报错行数提出来,再用vim命令打开,发现并没有什么异常。用split命令按行数切割后,部分文件也可以导入。

经分析GaussDB(DWS)的varchar型的字段或变量不允许含有'\0'(也即数值0x00、UTF编码'\u0000')的字符串 ,需在导入前去掉字符串中的'\0'。

处理方法

用sed命令替换0x00后,即可成功导入。

1
sed -i 's/\x00//g;' file

参数说明:

  • -i表示在原文件直接替换。
  • s/表示替换。
  • /g表示全局替换。