gnu55 디비의 ko_ 접두어로 시작하는 테이블 일괄 삭제 명령어?

gnu55 디비의 ko_ 접두어로 시작하는 테이블 일괄 삭제 명령어?

QA

gnu55 디비의 ko_ 접두어로 시작하는 테이블 일괄 삭제 명령어?

본문

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

https://sir.kr/qa/202022

으악.... 질문자/답변자가.......ㅋ
감사합니다.  저 질문을 했던 게 전혀 기억이 안 나네요. ㅜㅜ

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 = CONCAT('DROP TABLE ', db, '.', tbl);
                PREPARE stmt FROM ;
                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_');

답변을 작성하시기 전에 로그인 해주세요.
전체 3

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT