gnu55 디비의 ko_ 접두어로 시작하는 테이블 일괄 삭제 명령어? 채택완료
sinbi
1년 전
조회 15,909
ChatGPT가 2개 알려줬는데, 해보니 안 되네요.
1,
SELECT CONCAT('DROP TABLE ', TABLE_SCHEMA, '.', TABLE_NAME, ';') AS Query
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'gnu55' AND TABLE_NAME LIKE 'ko\_%';
2.
DROP TABLE IF EXISTS `gnu55`.`ko_%`;
phpMyAdmin에서 체크하고 제거하면 금방이긴 한데, 궁금해서 질문해 봐요. ㅎ
댓글을 작성하려면 로그인이 필요합니다.
답변 1개
채택된 답변
+20 포인트
답변에 대한 댓글 1개
s
sinbi
1년 전
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
감사합니다. 저 질문을 했던 게 전혀 기억이 안 나네요. ㅜㅜ
PS. 덕분에 아래 코드로 잘 지웠습니다.
DELIMITER ;
SET FOREIGN_KEY_CHECKS = ON;
DELIMITER //
DROP PROCEDURE IF EXISTS `DROP_TABLES`//
CREATE PROCEDURE `DROP_TABLES`(IN dbname VARCHAR(100), IN tblname_prefix VARCHAR(100))
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE db VARCHAR(100);
DECLARE tbl VARCHAR(255);
DECLARE cur CURSOR FOR SELECT TABLE_SCHEMA, TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = dbname;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN cur;
read_loop: LOOP
FETCH cur INTO db, tbl;
IF done THEN
LEAVE read_loop;
END IF;
IF INSTR(tbl, tblname_prefix) = 1 THEN
SET @query = CONCAT('DROP TABLE ', db, '.', tbl);
PREPARE stmt FROM @query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SELECT CONCAT(db, '.', tbl, ' is dropped') removed FROM DUAL;
END IF;
END LOOP;
CLOSE cur;
END//
DELIMITER ;
CALL DROP_TABLES('gnu55', 'ko_');