Como posso obter um arquivo mysqldump codificado em utf-8 para o psql?

0

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.

    
por davur 28.02.2012 / 23:43

1 resposta

1

Tente o seguinte:

mysqldump --default-character-set=charset_name
    
por 29.02.2012 / 03:59