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

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
gnu55 디비의 ko_ 접두어로 시작하는 테이블 일괄 삭제 명령어?

QA

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

답변 1

본문

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_');

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 5
© SIRSOFT
현재 페이지 제일 처음으로