web-dev-qa-db-ja.com

1つのコマンドでデータベース内のすべてのテーブルを変更する

データベース内のすべてのテーブルを変更する単一または1行のコマンドはありますか?データベース内のすべてのテーブルでこのコマンドを発行したいと思います。

ALTER TABLE `table_name` CONVERT TO CHARACTER SET utf8;

私の目的は、文字セットをlatin1からutf8にすべてのテーブルに変更することです。

PDATE: RDBMSはMySQLです

13
Mar Cejas

いいえ、そのようなコマンドはありません。しかし、あなたができることはあなたのためにあなたのためにSQLを生成するための簡単なクエリを書くことです:

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";

次に、これからの出力を実行して、必要なことを実行できます。

出典:

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

18
Mr.Brownstone

最も簡単な方法:データベースをエクスポートします。エクスポートしたデータベースをテキストエディターで開き、「UTF8」などで検索/置換を実行します。修正したデータベースを再インポートします。

2
Andrew Smith

MS SQL Serverを使用している場合は、ドキュメント化されていないストアドプロシージャms_foreachtableを使用できます。テーブル名を?に置き換えます。ステートメントで。

だからあなたの例では

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