我的原始数据库使用SQL_ASCII编码,我未来的数据库使用UTF8,它在另一台服务器中。
嗯。。。我用这个命令导出:
pg_dump -v -E UTF8 -Fc -h x.x.x.x old-database-name -U username > backup.dmp
并尝试用这个导入
pg_restore --single-transaction -v -Fc -d new-database-name -U username < backup.dmp
但我面临这个错误:
pg_restore:[arquivador(bd)]错误PROCESSAR TOC:pg_restore:[arquivador(bd)]Erro no registro do TOC 722;1255 4594720功能任意(字符变化)用户名pg_restore:[arquivador(bd)]无法执行查询:ERRO:seqência de byteséinválida paracodificação"UTF8":0xe1 0x72 0x69
如果我在没有-E参数的情况下转储和恢复操作正常,但我的新数据库存在字符问题
好吧。。。我不得不像纯文本一样转储,并在linux上使用以下命令删除无效字符:
iconv -c -f UTF-8 -t UTF-8 <backup.sql >backup-cleaned.sql