테스트 사이트 - 개발 중인 베타 버전입니다

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년 전
로그인 후 평가할 수 있습니다

답변에 대한 댓글 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_');

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인