Я перенесу некоторые данные из базы данных 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 действительно обеспечивает бесперебойную работу импорта, но это должно быть автоматизировано, поэтому мне нужно вырезать этот шаг вручную.

1 ответ1

1

Попробуйте следующее:

mysqldump --default-character-set=charset_name

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .