Migrando um banco Latin1 para UTF-8

37 views
Skip to first unread message

Diego Henrique Oliveira

unread,
Aug 24, 2012, 3:06:08 PM8/24/12
to PHP MG, phprio, php-ar...@googlegroups.com
Pessoal,

Eu estou migrando um banco de dados BEM antigo e com muitos dados para
utf-8. Como não podemos perder nada de dados, andei procurando alguma
soluções que fosse direto no banco, sem ter que extrair os dados e
retornar com eles posteriormente.


Encontrei este artigo que explica como fazer:
http://www.bothernomore.com/2008/12/16/character-encoding-hell/

Aparentemente funciona... mas...

Ele perde parte de alguns dados. Por exemplo: Instituição vira Institui.
Alguem sabe o que pode ser?

Só pra ser exato eu to executando estes comandos:

ALTER TABLE `name` MODIFY COLUMN `title` VARCHAR(255) CHARACTER SET binary;
ALTER TABLE `name` MODIFY COLUMN `title` VARCHAR(255) CHARACTER SET utf8;


Porém estes comandos ficam dentro de um script que vai processando as
tabelas com describe (porque não dava pra fazer na mão, são muitos
campos).


Se alguem puder me dar umas ideias sobre.

Obrigado

Diego Oliveira

Daniel Lima

unread,
Aug 24, 2012, 4:41:29 PM8/24/12
to php-ar...@googlegroups.com, Renato Medina, PHP MG, phprio
Diego,

Adicionei o Renato Medina à sua mensagem. Ele deve saber lidar com esse tipo de situação.

Mas acredito que só mudando o charset da tabela não resolveria, pois os dados já foram armazenados como latin1, que é uma codificação diferente.

Tente criar uma nova tabela com a codificação que você precisa e depois insira os dados nela usando um INSERT INTO TABELA_NOVA (SELECT * FROM TABELA_ANTIGA), usando uma conexão UFT-8

Abs,
________________________________________
Daniel Lima
Web Developer - Cilens Software

Skype: yourwebmaker
Twitter: @yourwebmaker 
G-talk: yourwe...@gmail.com
MSN: yourwe...@hotmail.com



2012/8/24 Diego Henrique Oliveira <con...@diegoholiveira.com>

Renato Medina

unread,
Aug 24, 2012, 5:29:43 PM8/24/12
to php-ar...@googlegroups.com, Renato Medina, PHP MG, phprio
O meu caro Diego,

Dá um dump nesse negocio e importa tudo outra vez na codificação que deseja.

ABS!

Diego Henrique Oliveira

unread,
Aug 24, 2012, 6:28:29 PM8/24/12
to php-ar...@googlegroups.com, Renato Medina, PHP MG, phprio
Obrigado a todos pela ajuda. Isso aqui resolveu meu problema perfeitamente:


update table set field = convert(convert(field using binary) using utf8)


Só demorou um pouco pra rodar na massa de dados do banco, mas resolveu
perfeitamente bem o problema.


abraços






2012/8/24 Renato Medina <medin...@gmail.com>:
Reply all
Reply to author
Forward
0 new messages