Ich muss diese Anweisungen in allen Tabellen für alle Spalten ausführen.
alter table table_name charset=utf8;
alter table table_name alter column column_name charset=utf8;
Ist es möglich, dies in MySQL auf irgendeine Weise zu automatisieren? Ich würde es vorziehen, mysqldump zu vermeiden
Update: Richard Bronosky hat mir den Weg gezeigt :-)
Die Abfrage, die ich in jeder Tabelle ausführen musste:
alter table DBname.DBfield CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
Verrückte Abfrage, um alle anderen Abfragen zu generieren:
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';
Ich wollte es nur in einer Datenbank ausführen. Es dauerte zu lange, um alles in einem Durchgang auszuführen. Es stellte sich heraus, dass eine Abfrage pro Feld und Tabelle generiert wurde. Und nur eine Abfrage pro Tabelle war erforderlich (anders als bei der Rettung). Die Ausgabe auf eine Datei zu bekommen war, wie ich es realisiert habe.
So generieren Sie die Ausgabe in eine Datei:
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
Und zum Schluss alle Abfragen ausführen:
mysql --user=user --password=secret < alter.sql
Danke Richard. Du bist der Mann!
quelle
Tatsächlich können Sie CONVERT TO für eine Tabelle verwenden, um alle Spalten in dieser Tabelle in den Zeichensatz und die Sortierung zu konvertieren.
Außerdem ist es für mich sinnvoller, die tatsächliche Datenbank auszuwählen, für die Sie dies tun möchten. Also das:
lieber als das:
Aber ich denke, wenn du es wirklich auf allen Tischen machen wolltest, könntest du das erstere verwenden. Scheint mir allerdings ein bisschen schwer zu fallen. :)
quelle
Um die Sortierung für alle von mir verwendeten Spalten zu ändern
quelle
Sie können die
information_schema
Datenbank verwenden, um die zu ändernde Spalte und Tabelle zu finden. Sie finden sie mit:Anschließend können Sie die Änderung mit einem SQL-Skript, einer Speicherprozedur oder mit Ihrer bevorzugten Entwicklungssprache automatisieren.
quelle