2011-01-04 11 views
0

データベースの一部であるテーブル内の列のデータ型を変更するスクリプトを知っている人はいますか?例えば列データ型を変更するSqlスクリプト

私は同じカラムを持つ20の異なるデータベースにユーザテーブルを持っています。私はそのテーブルから列の1つのデータ型を変更したいと思います。

答えて

1

information_schemaを使用すると、DDLコマンドを生成して列を変更できます。

たとえば、すべてのテーブルの名前が「user」で、変更したくない他のデータベースには「user」テーブルがなく、カラムの名前が「change_me」で、それはnullになることはありませんunsigned int型にするために、あなたはこのような何か行うことができます:

select concat('ALTER TABLE ',table_schema, 
'.',table_name, 
' MODIFY COLUMN ',column_name, 
' INT UNSIGNED NOT NULL;') as sql_stmt 
into outfile '/tmp/modify_columns.sql' 
from information_schema.columns 
where table_name = 'user' 
and column_name = 'change_me'; 

\. /tmp/modify_columns.sql 
0

をまた何度もあることを覚えて、列には、データタイプを変更すると、DBMSに依存する空でなければなりません。 からからまで指定してください。代替:

desc foo; 
Name       Null  Type                                               
------------------------------ -------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 
BAR1         NUMBER  

-- this will not work: 
alter table foo modify (bar1 varchar(255));  


--instead 
alter table foo add (bar2 varchar(255)); 

-- assume the DB will auto change type: 
update foo set bar2=bar1; 

alter table foo drop (bar1); 
alter table foo rename column bar2 to bar1; 
関連する問題