Eu preciso executar essas instruções em todas as tabelas para todas as colunas.
alter table table_name charset=utf8;
alter table table_name alter column column_name charset=utf8;
É possível automatizar isso de alguma forma dentro do MySQL? Eu preferiria evitar o mysqldump
Atualização: Richard Bronosky me mostrou o caminho :-)
A consulta que eu precisava executar em todas as tabelas:
alter table DBname.DBfield CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
Consulta maluca para gerar todas as outras consultas:
SELECT distinct CONCAT( 'alter table ', TABLE_SCHEMA, '.', TABLE_NAME, ' CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;' ) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'DBname';
Eu só queria executá-lo em um banco de dados. Estava demorando muito para executar tudo de uma só vez. Descobriu-se que estava gerando uma consulta por campo por tabela. E apenas uma consulta por tabela era necessária (diferente do resgate). Obter a saída em um arquivo foi como eu percebi isso.
Como gerar a saída para um arquivo:
mysql -B -N --user=user --password=secret -e "SELECT distinct CONCAT( 'alter table ', TABLE_SCHEMA, '.', TABLE_NAME, ' CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;' ) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'DBname';" > alter.sql
E, finalmente, para executar todas as consultas:
mysql --user=user --password=secret < alter.sql
Obrigado Richard. Você é o cara!
fonte
Na verdade, você pode usar CONVERT TO em uma tabela para converter todas as colunas nessa tabela para o conjunto de caracteres e agrupamento.
Além disso, faz mais sentido para mim selecionar o banco de dados real no qual você deseja fazer isso. Então, é isso:
em vez disso:
Mas acho que se você realmente quisesse fazer isso em todas as mesas, poderia usar o primeiro. Parece um pouco pesado para mim. :)
fonte
Para alterar o agrupamento em todas as colunas que usei
fonte
Você pode usar o
information_schema
banco de dados para encontrar a coluna e a tabela que precisa alterar. Você pode encontrá-los com:Em seguida, você pode automatizar a alteração com um script SQL, procedimento de armazenamento ou com sua linguagem de desenvolvimento preferida.
fonte