2011-01-04 3 views
0

데이터베이스의 일부인 테이블에서 열의 데이터 형식을 변경하는 스크립트를 아는 사람이 있습니까? 예 :열 데이터 형식을 수정하는 Sql 스크립트

동일한 열이있는 20 개의 서로 다른 데이터베이스에 사용자 테이블이 있습니다. 해당 테이블에서 열 중 하나의 데이터 유형을 변경하려고합니다.

답변

1

information_schema를 사용하여 DDL 명령을 생성하여 열을 수정할 수 있습니다.

예를 들어 모든 테이블의 이름이 "user"이고 다른 데이터베이스에 변경하지 않으려는 사용자 테이블이없는 경우 열의 이름이 "change_me"이고 원하는 테이블이 그것을 결코 null의 부호없는 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; 
관련 문제