2012-01-09 3 views
0

MySQL의 모든 필드 길이를 업데이트 할 수있는 방법이 있습니까? 나는 시도했다 :MySQL은 모든 필드 길이를 수정합니다

ALTER TABLE mytable MODIFY * VARCHAR(150); 

그러나 기쁨. 어떤 제안?

+0

이것은 커서가 의미가있는 아주 드문 경우 중 하나입니다.'information_schema'를 반복하고'alter' 문을 실행해야합니다. 그것이 말하게되면서, 내가 가지고있는 진짜 질문은 다음과 같다. 확실히 정수와 다른 컬럼을 가지고 있습니다. 맞습니까? – Eric

+0

이 작업을 수행하는 것은 잘못된 데이터베이스 디자인 또는 오해의 표시입니다. 왜 이럴 필요가 있니? – kba

+0

예. 방금 CSV 파일에서 여러 필드를 가져 왔습니다. 30 개 이상의 필드 중 하나의 저장은 모두 varchar입니다. 나는 모두 길이가 100으로 기본 설정을 조정하고 싶습니다. 수입시 길이를 지정하는 데는 어느 정도 시간이 걸립니까? –

답변

3

information_schema 데이터베이스의 정보를 사용하여 쿼리를 생성 할 수 있습니다. 모든 VARCHAR을 변경해야하는 경우

는 테이블 myTable 사용 쿼리 VARCHAR (150) 내지 (100) 열 : 다음

SELECT CONCAT('ALTER TABLE `myTable`', 
       GROUP_CONCAT( 
        CONCAT('\nMODIFY ', COLUMN_NAME, ' VARCHAR(150) '), 
       '') 
      ) AS query 
FROM information_schema.COLUMNS 
WHERE DATA_TYPE = 'varchar' 
AND CHARACTER_MAXIMUM_LENGTH = 100 
AND TABLE_SCHEMA = 'myDatabase' 
GROUP BY TABLE_NAME 

과 실제 일을하는 또 다른 쿼리로/붙여 넣기 출력을 복사합니다.

+0

감사합니다. 나는 방법이 있어야한다는 것을 알고있었습니다. 이것을 mysql 커맨드 라인에 연결했을 때 쿼리를주었습니다. 그런 다음 실제로 스키마를 변경하기 위해 복사/붙여 넣기를 할 수있었습니다. –

0

각 열을 구체적으로 수정해야합니다. 모든 수정은 하나의 "패스"에서 할 수 있습니다, 그래서 이것은 n 개의 개별 ALTER TABLE 호출을 실행하는 것보다 더 효율적입니다

ALTER TABLE mytable 
MODIFY col_1 VARCHAR(150), 
MODIFY col_2 VARCHAR(150), 
MODIFY col_3 VARCHAR(150); 

참고.

+0

저는 열 단위로 할 수 있다는 것을 알고 있습니다. 저는 좀 더 간결한 (즉, 게으른) 길을 기대했습니다. –

관련 문제