2014-11-06 2 views
0

데이터베이스의 특정 데이터 형식이있는 모든 열을 변경하는 방법이 있습니까?모든 열을 변경 WHERE 데이터 형식

데이터 형식이 datetime(6) 인 일부 열이 있는데 그 중 어떤 것이 나는 단지 그 (것)들이 datatime ... 6 분수가 아니기를 바랄 것입니다. 이 모든 가능한 열을 지정하지 않고도 MySQL에서 할 수 있습니까? 감사합니다

+0

잘은 ..you이 http://stackoverflow.com/questions/3773480/how-do-i-alter-table-column-datatype에 대한 자세한 내용을 볼 수있는 기능을 수정하려면 사용할 수 있습니다 -on-more-than-1-column –

+0

전체 데이터베이스에서이 작업을 수행하려고합니다. – raygo

+0

그런 다음 모든 테이블의 스키마를 크롤링하고 ALTER TABLE 쿼리를 생성하는 스크립트를 작성해야합니다. – David162795

답변

1

당신은 필요한 문장과 텍스트 문자열을 생성하고 어딘가에 저장 (내가 (6) 날짜와 열을 필요는 없지만, 그렇게해야)합니다

사용 간부 문 다음
select 
concat('ALTER TABLE ', 
     TABLE_SCHEMA, 
     '.', 
     table_name, 
     ' CHANGE COLUMN ', 
     Column_name, 
     ' ', 
     Column_name, 
     ' DATETIME NULL DEFAULT NULL') 
from 
    INFORMATION_SCHEMA.COLUMNS 
where 
    table_schema = 'my_schema' 
     and data_type = 'datetime' 
    and character_maximum_length = 6 #may be numeric_precision, i don't know 

, 같은 :

PREPARE stmt1 FROM 'ALTER TABLE ....'; 
EXECUTE stmt1 
+0

datetime_precision을 사용하고 쿼리 끝에 세미콜론을 넣어야했습니다. 그러나 이것은 거의 매력처럼 일했습니다! 감사 – raygo

관련 문제