我正在将一些数据从 MySql 数据库 (v5.1.44/MyISAM/collation=latin1_swedish_ci) 迁移到 PostgreSQL (v9.0.4/OSX Lion 中包含的数据库)。
我在用着
$ mysqldump --compatible=postgresql > tmp.sql # output create/insert statements
$ psql --command='\i tmp.sql' # import to postgresql
但是导入失败并出现错误ERROR: invalid byte sequence for encoding "UTF8": 0xe97261
(这是关于重音字母的)。
我认为问题在于导出的文件没有使用 utf-8。
导出的文件显示以下文件信息
$ file tmp.sql
tmp.sql: Non-ISO extended-ASCII text, with very long lines
最简单的是什么,可编写脚本如何为 psql 准备以 utf-8 格式的文件?
这不起作用:
$ iconv -f ASCII -t UTF-8 tmp.sql > out.sql
iconv: tmp.sql:18:59270: cannot convert
我发现打开文件vim
并发布:set fenc=utf-8
确实可以使导入顺利进行,但这必须自动化,所以我需要省去这个手动步骤。
答案1
请尝试以下操作:
mysqldump --default-character-set=charset_name