DB/MySQL

테이블의 모든 컬럼명을 대문자/소문자로 변경하기

채윤아빠 2020. 11. 23. 12:12
728x90
반응형

개발 유지보수 중에 특이하게도 테이블의 모든 컬럼명을 대문자로 작성한 데이터베이스로 작업된 소스를 수정할 일이 있었는데, DB 유지관리를 위하여 명명 규칙에 맞도록 테이블의 컬럼명을 모두 소문자로 변경하는 작업을 해야만 했습니다.

테이블을 SQL로 모두 백업 받은 후에, 컬럼명을 일일이 찾아 소문자로 변경하는 것은 엄두가 나지 않아서 손쉽게 할 수 있는 방법을 찾아 보았더니, 간단하게 다음과 같은 쿼리문을 활용하여 테이블의 컬럼명을 일괄 대문자 (UPPER) 또는 소문자 (LOWER)로 변경할 수 있었습니다.

SELECT
    CONCAT('ALTER TABLE ', TABLE_NAME, ' CHANGE `', COLUMN_NAME, '` `',
        UPPER(COLUMN_NAME), '` ', COLUMN_TYPE, ';')
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = '{your schema name}';

위 코드를 실행하면, 컬럼명내의 모든 소문자들을 모두 대문자로 변경하도록 다음과 같은 명령문이 출력됩니다.

ALTER TABLE USER CHANGE `phone_no` `PHONE_NO` varchar(20);
ALTER TABLE USER CHANGE `tel_no` `TEL_NO` varchar(20);
ALTER TABLE USER CHANGE `email` `EMAIL` varchar(50);
ALTER TABLE USER CHANGE `device_id` `DEVICE_ID` varchar(20);
ALTER TABLE USER CHANGE `reg_id` `REG_ID` varchar(512);

위 명령문들을 복사하여 그대로 실행하면, 소문자 컬럼명을 일괄 대문자로 변경합니다.

테이블 단위로 변경할 경우에는 WHERE 절의 조건을 "TABLE_NAME"으로 변경하면 됩니다.

참고자료 : https://stackoverrun.com/ko/q/1237335