暂无图片
oracle迁移数据库到kingbase 0x00报错
我来答
分享
暂无图片 匿名用户
oracle迁移数据库到kingbase 0x00报错

1.从oracle卸出一张表 表命 t_cs 列名id 路径 /test/test/t_cs.dat
id的内容为 011405220035-007\0004\0002\0009\011511300045
2.入kingbase
ksql -u usename -h 199.122.1.2 -p 1234 test -c "\copy t_cs from '/test/test/t_cs.dat '; "

报错 ERROR:invalid byte sequence for encoding "UTF8": 0x00

CONTEXT copy t_cs ,line 1: 011405220035-007\0004\0002\0009\011511300045

请问有人知道这个怎么解决吗?

随后我加了 set ignore_char_null_check=on 能入库 但是 只保留了 011405220035-007 其他字符自动删除了,

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
wo猪
  • SELECT * FROM t_cs WHERE text_column LIKE '%\x00%';
  • 考虑一下是不是存在包含非法 UTF - 8 序列的记录。

  • 直接使用set ignore_char_null_check=on 会忽略空字符,导致数据丢失的。


暂无图片 评论
暂无图片 有用 1
打赏 0
helloword
2024-12-18
那怎么解决这个问题,让数据入库?
wo猪

确定非法 UTF - 8 数据的位置:

SELECT * 

FROM your_table 

WHERE UTL_RAW.CAST_TO_RAW(text_column) LIKE '%' || UTL_RAW.CAST_TO_RAW(CHR(0)) || '%';

清理非法 UTF - 8 数据:

UPDATE your_table 

SET text_column = REPLACE(text_column, CHR(0), '');

验证清理结果:

SELECT * 

FROM your_table 

WHERE UTL_RAW.CAST_TO_RAW(text_column) LIKE '%' || UTL_RAW.CAST_TO_RAW(CHR(0)) || '%';

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交