データベースの一部であるテーブル内の列のデータ型を変更するスクリプトを知っている人はいますか?例えば列データ型を変更するSqlスクリプト
私は同じカラムを持つ20の異なるデータベースにユーザテーブルを持っています。私はそのテーブルから列の1つのデータ型を変更したいと思います。
データベースの一部であるテーブル内の列のデータ型を変更するスクリプトを知っている人はいますか?例えば列データ型を変更するSqlスクリプト
私は同じカラムを持つ20の異なるデータベースにユーザテーブルを持っています。私はそのテーブルから列の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
をまた何度もあることを覚えて、列には、データタイプを変更すると、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;