对于SQL Server数据迁移至PostgreSQL出错的解释以及解决建议
最近对SQL Server到PostgreSQL的数据迁移时出现了问题,返回的错误为:invalid byte sequence for encoding "UTF8": 0x00。 经查证 pg 源代码,该问题引起的原因是 sql server 的字符类型字段中含有空字符 \0 ,该字符在 pg 中不支持。 问题重现: 1、PG客户端: postgres=# create table text_test (id int,info text); CREATE TABLE postgres=# insert into text_test values (1,E'\0x00'); ERROR: invalid byte sequence for encoding "UTF8": 0x00 2、SQL Server产生数据 create table test_varchar(id int,name varchar(20)); insert into test_varchar values (1, 'name' + char(0)); insert into test_varchar values (1, 'name' + ''); 然后通过java程序进行获取数据并插入到PG,同样会得到错误信息: invalid byte sequence for encoding "UTF8":