it-swarm.com.de

Ändern Sie alle Tabellen in einer Datenbank mit einem einzigen Befehl

Gibt es einen ein- oder einzeiligen Befehl zum Ändern aller Tabellen in einer Datenbank? Ich möchte diesen Befehl in jeder Tabelle innerhalb einer Datenbank ausgeben:

ALTER TABLE `table_name` CONVERT TO CHARACTER SET utf8;

Mein Ziel ist es, den Zeichensatz von latin1 auf utf8 für alle Tabellen zu ändern.

PDATE : RDBMS ist MySQL

13
Mar Cejas

Nein, es gibt keinen solchen Befehl. Sie können jedoch eine kurze Abfrage schreiben, um die SQL für Sie zu generieren:

USE INFORMATION_SCHEMA;
SELECT 
CONCAT("ALTER TABLE `", TABLE_SCHEMA,"`.`", TABLE_NAME, "` CONVERT TO CHARACTER SET UTF8;") 
AS MySQLCMD FROM TABLES 
WHERE TABLE_SCHEMA = "your_schema_goes_here";

Dann können Sie die Ausgabe davon ausführen, um das zu tun, was Sie brauchen.

Quellen:

http://forums.mysql.com/read.php?20,244395,244421#msg-244421

18
Mr.Brownstone

Einfachster Weg: Exportieren Sie die Datenbank. Öffnen Sie die exportierte Datenbank in einem Texteditor und führen Sie ein Suchen/Ersetzen mit "UTF8" oder was auch immer durch. Geänderte Datenbank erneut importieren.

2
Andrew Smith

Wenn Sie mit MS SQL Server arbeiten, gibt es eine undokumentierte gespeicherte Prozedur ms_foreachtable, die Sie verwenden können. Verwenden Sie den Tabellennamen durch ein? in der Aussage.

Also in deinem Beispiel

EXEC ms_foreachtable 'ALTER TABLE [?] .....'
1
Kenneth Fisher