Substituição de caracteres em um banco de dados mysql
Pergunta
Eu tenho um banco de dados transferidos grande phpbb3 a partir de um banco de dados latin1 a um utf-8 Tudo correu bem, agora eu preciso mudar os caracteres "estranhos" no banco de dados. Ontem eu encontrei um método que funcionou, agora não consigo encontrá-lo mais, eu tentei:
update phpbb_topics set topic_title = replace(topic_title, 'Ã', 'à');
update phpbb_topics set topic_title = replace(topic_title, 'è', 'è');
Basicamente eu preciso mudar todos os personagens a No campo tabela para um e assim por diante.
Como você pode fazer isso?
Graças
Solução
atualização phpbb_topics definir TOPIC_TITLE = substituir (substituir (TOPIC_TITLE, 'a', 'E'), 'a', 'a');
Você deve responder-se as seguintes questões:
- o que os dados binários são armazenados em banco de dados (uso ascii () ou SELECT ... INTO DUMPFILE)
- que dados binário é enviado para o cliente (nem sempre é o mesmo que armazenado)
- como seus programas cliente recebeu dados binários? (Experimentar diferentes clientes e diferentes opções)
Outras dicas
Gostaria de despejá-lo em um arquivo .sql e, em seguida, substituir os caracteres com sed ou um editor de texto (se o arquivo não é grande). Depois que você executar o script novamente. Talvez haja uma maneira de fazer isso no banco de dados diretamente, mas eu não sei isso.
O problema com a minha solução é que não é atômica. Alterações no db entre o despejo e a reinserção são perdidas.
Greetings Raffael