테이블이 마음에 드는 내 SQL 대량 드롭 테이블?
DROP TABLE (
SELECT table_name
FROM information_schema.`TABLES`
WHERE table_schema = 'myDatabase' AND table_name LIKE BINARY 'del%');
안 되는 거 알아요!SQL에서 이와 같은 것에 해당하는 것은 무엇입니까?간단한 Python 스크립트를 사용하여 이 작업을 수행할 수 있지만 SQL로 직접 작업을 수행할 수 있는지 궁금했습니다.MySQL을 사용하고 있습니다.감사해요!
SET @tables = NULL;
SELECT GROUP_CONCAT('`', table_schema, '`.`', table_name,'`') INTO @tables FROM information_schema.tables
WHERE table_schema = 'myDatabase' AND table_name LIKE BINARY 'del%';
SET @tables = CONCAT('DROP TABLE ', @tables);
PREPARE stmt1 FROM @tables;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
이와 같은 문장을 생성하고 실행할 것입니다.
DROP TABLE myDatabase.del1, myDatabase.del2, myDatabase.del3;
@Devart의 답변에 대한 약간의 개선점:
SET @tables = NULL;
SELECT GROUP_CONCAT(table_schema, '.`', table_name, '`') INTO @tables FROM
(select * from
information_schema.tables
WHERE table_schema = 'myDatabase' AND table_name LIKE 'del%'
LIMIT 10) TT;
SET @tables = CONCAT('DROP TABLE ', @tables);
select @tables;
PREPARE stmt1 FROM @tables;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
이 스크립트는 콘솔의 출력이 다음과 같을 때까지 반복적으로 실행되어야 합니다.NULL
변경 사항은 다음과 같습니다.
- 테이블 이름을 랩핑하는 백틱(')(비표준 문자를 포함하는 경우)
- 가 추가된
LIMIT
제가 언급한 잘라내기 문제를 피하기 위해 - "인쇄"를 추가했습니다(
select @tables;
스크립트 실행을 중지할 때 제어권을 갖게 됩니다.
한 줄의 셸 명령을 사용하면 테이블을 빠르게 삭제할 수 있습니다(순수 SQL에서는 그렇지 않으므로 이 질문에 직접 답하지 않음). 한 줄의 셸 명령을 사용할 수 있습니다.
echo "show tables like 'fsm%'" | mysql | tail +2 | while read t; do echo "drop table \`$t\`;"; done | mysql
쿼리와 일치하는 테이블이 없을 경우 오류가 발생하지 않도록 IFNULL을 Devart의 솔루션에 추가하는 것이 유용하다고 생각했습니다.
SET @tables = IFNULL(CONCAT('DROP TABLE ', @tables),'SELECT NULL;');
@Devart의 답변 외에도:
테이블이 많을 경우 설정해야 할 수도 있습니다.group_concat_max_len
:
SET group_concat_max_len = 4096;
phpMyAdmin을 사용할 수 있고 특정 접두사가 있는 테이블을 드롭해야 한다면 빠르고 쉽게 이 작업을 수행할 수 있습니다.원하는 데이터베이스로 이동하여 모든 테이블 목록을 표시합니다.표는 알파벳 순서로 표시되므로 삭제 접두사가 붙은 표가 모두 함께 나타납니다.첫번째로 이동한 후 왼쪽에 있는 체크박스를 클릭합니다.그런 다음 접두사가 있는 마지막 테이블로 스크롤하여 이동을 누른 상태에서 체크박스를 클릭합니다.그러면 접두사가 선택되는 모든 테이블이 표시됩니다.목록 맨 아래로 이동하여 선택한 모든 테이블에 대한 수행 드롭을 선택합니다.SQL 생성이 올바른지 확인하고 삭제를 진행합니다!
언급URL : https://stackoverflow.com/questions/11053116/mysql-bulk-drop-table-where-table-like
'programing' 카테고리의 다른 글
Excel 2007/2010은 REST 웹 서비스를 어떻게 소비할 수 있습니까? (0) | 2023.09.14 |
---|---|
PHP로 이미지 잘라내기 (0) | 2023.09.14 |
jQuery나 JavaScript에서 "$" 기호의 의미는 무엇입니까? (0) | 2023.09.14 |
문자열을 시간으로 변환 (0) | 2023.09.14 |
열의 개수 (0) | 2023.09.14 |