Tente o seguinte:
mysqldump --default-character-set=charset_name
Estou migrando alguns dados de um banco de dados MySql (v5.1.44 / MyISAM / collation = latin1_swedish_ci) para um PostgreSQL (v9.0.4 / o incluído no OSX Lion).
Estou usando
$ mysqldump --compatible=postgresql > tmp.sql # output create/insert statements
$ psql --command='\i tmp.sql' # import to postgresql
No entanto, a importação falha com o erro ERROR: invalid byte sequence for encoding "UTF8": 0xe97261
(Isso é em referência a letras acentuadas).
O problema, eu acho, é que o arquivo exportado não está usando o utf-8.
O arquivo que é exportado mostra as seguintes informações de arquivo
$ file tmp.sql
tmp.sql: Non-ISO extended-ASCII text, with very long lines
Qual é a maneira mais fácil, scriptável para obter este arquivo preparado em utf-8 para o psql?
Isso não funciona:
$ iconv -f ASCII -t UTF-8 tmp.sql > out.sql
iconv: tmp.sql:18:59270: cannot convert
Descobri que abrir o arquivo em vim
e emitir :set fenc=utf-8
faz a importação funcionar sem problemas, mas isso precisa ser automatizado, portanto, preciso cortar essa etapa manual.