반복적인 다중 테이블에 쿼리를 적용하기 위한 방법 정리
반복적인 쿼리
예를들어, 테이블 명칭이 비슷하지만 여러 테이블이 존재하고 단순 반복적인 쿼리를 해야할 경우 유용하다.
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