Necesito ejecutar estas declaraciones en todas las tablas para todas las columnas.
alter table table_name charset=utf8;
alter table table_name alter column column_name charset=utf8;
¿Es posible automatizar esto de alguna manera dentro de MySQL? Preferiría evitar mysqldump
Actualización: Richard Bronosky me mostró el camino :-)
La consulta que necesitaba ejecutar en cada tabla:
alter table DBname.DBfield CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
Consulta loca para generar todas las demás 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';
Solo quería ejecutarlo en una base de datos. Se estaba tardando demasiado en ejecutar todo en una sola pasada. Resultó que estaba generando una consulta por campo por tabla. Y solo era necesaria una consulta por tabla (distinta del rescate). Obtener el resultado en un archivo fue como me di cuenta.
Cómo generar la salida a un archivo:
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
Y finalmente para ejecutar todas las consultas:
mysql --user=user --password=secret < alter.sql
Gracias Richard ¡Eres el hombre!
fuente
En realidad, puede usar CONVERT TO en una tabla para convertir todas las columnas dentro de esa tabla en el conjunto de caracteres y la clasificación.
Además, tiene más sentido para mí seleccionar la base de datos real en la que desea hacer esto. Así que esto:
En vez de esto:
Pero supongo que si realmente quisieras hacerlo en todas las mesas, podrías usar el primero. Aunque parece un poco pesado para mí. :)
fuente
Para cambiar la clasificación en todas las columnas que usé
fuente
Puedes usar el
information_schema
base de datos para buscar la columna y la tabla que debe modificar. Puedes encontrarlos con:Luego puede automatizar el alter con un script SQL, procedimiento de almacenamiento o con su lenguaje de desarrollo preferido.
fuente