2017-11-27 10 views
1

私のリモートサーバーでは、すべてのデータベースのテーブルの列を更新する必要があります。これを一度にどのように行うことができますか?私は同じテーブルを持つ100以上のデータベースを持っています。MySQL - すべてのデータベースでカラムのデータ型を変更するには?

ALTER TABLE tablename MODIFY columnname VARCHAR(255); 
+0

私はフラットmysqlコマンドラインまたはクライアントではできないと思います。少なくとも、すべてのデータベース名とbashスクリプトを含むファイルを使用する必要があります。あなたはあなたが使用している言語でも行くことができます。 Rubystとして、mysql2 gemと単純なrubyスクリプトを使用することをお勧めします。 – tebayoso

答えて

2

これを行うスクリプトを発行するSQLクエリを記述できます。クエリは、サーバーの列を記述するinformation_schemaテーブルを参照し、ALTERクエリのシーケンスを生成します。その後、それらのクエリを実行します。

SELECT CONCAT(' ALTER TABLE `', TABLE_SCHEMA, '`.`', TABLE_NAME, 
       '` MODIFY `',COLUMN_NAME,'` VARCHAR(255);') ddl 
    FROM information_schema.`COLUMNS` 
WHERE TABLE_NAME = 'tablename' 
    AND COLUMN_NAME IN ('columnname') 

ALTER TABLE *.tablenameまたはそのような何かを行うにはどのonelinerはありません。

関連する問題