Search

MySQL 다중 테이블 Query 적용

반복적인 다중 테이블에 쿼리를 적용하기 위한 방법 정리

반복적인 쿼리

예를들어, 테이블 명칭이 비슷하지만 여러 테이블이 존재하고 단순 반복적인 쿼리를 해야할 경우 유용하다.
SELECT CONCAT('TRUNCATE ', TABLE_SCHEMA, '.', TABLE_NAME, ';') FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE 'table_%' AND TABLE_SCHEMA = 'example';
SQL
복사
위 예시는 테이블 초기화 하는 명령어인 TRUNCATE 를 해야하는 경우이다.
example이라는 DB 내 ‘table_’ 로 시작하는 테이블을 찾는 것이다.
찾은 결과 값을 Query문으로 만들어 준다.
TRUNCATE example.table_01; TRUNCATE example.table_02;
SQL
복사
예시 결과값

Query문 실행

실행해야 할 Query문을 얻었다면 이걸 실행해주어야 한다.
단순 반복적으로 실행할 수도 있겠지만 테이블 수가 많다면 시간을 아껴야 하지 않겠는가?
외부 파일로 저장해서 실행하면 간단하다.
SSH 혹은 터미널에서 mysql 로그인 후 해야 한다.
mysql> SELECT CONCAT('TRUNCATE ', TABLE_SCHEMA, '.', TABLE_NAME, ';') FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE 'table_%' AND TABLE_SCHEMA = 'example' INTO OUTFILE '/var/lib/mysql-files/save_query.sql';
SQL
복사
외부 파일로 저장
mysql> source '/var/lib/mysql-files/save_query.sql';
SQL
복사
외부 파일을 실행
위 방법으로 여러 테이블삭제(DROP)이나 동일한 구조라면 컬럼 변경도 가능하다.
ⓒ VeriCras 2024
vericras@gmail.com