Я перенесу некоторые данные из базы данных 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
Какой самый простой способ подготовить этот файл для сценариев в utf-8 для psql?
Это не работает:
$ iconv -f ASCII -t UTF-8 tmp.sql > out.sql
iconv: tmp.sql:18:59270: cannot convert
Я обнаружил, что открытие файла в vim
и выдача :set fenc=utf-8
действительно обеспечивает бесперебойную работу импорта, но это должно быть автоматизировано, поэтому мне нужно вырезать этот шаг вручную.