Oracle - 하나의 쿼리에 여러 개의 테이블 드롭
나는 데이터베이스에 50개의 테이블을 가지고 있는데, 6개의 테이블만 있으면 됩니다.
하나의 쿼리로 남은 테이블을 삭제하려면 어떻게 해야 합니까?
아래 쿼리를 사용하여 DROP TABLE 명령 목록을 생성할 수 있습니다.
SELECT 'DROP TABLE ' || table_name || ';' FROM user_tables;
그런 다음 보관할 테이블 6개를 제거하고 다른 명령을 실행합니다.아니면 당신은 추가합니다.WHERE table_name NOT IN (...)
쿼리에 절을 지정합니다.
도움이 되길 바랍니다.
오라클에서 직접적인 명령이나 방법이 없기 때문에 이와 같은 것을 사용합니다.
begin
for rec in (select table_name
from all_tables
where table_name like '%ABC_%'
)
loop
execute immediate 'drop table '||rec.table_name;
end loop;
end;
/
답변을 확장하기 위해 Oracle 10 버전 이상의 경우 삭제된 테이블이 영구 삭제되지 않고 재활용 빈으로 이동됩니다.테이블을 진정으로 삭제하려면 옵션 파라미터 PURGE를 추가해야 합니다.
승인된 답변을 확대합니다.
SELECT 'DROP TABLE ' || table_name || ' PURGE ;' DB_DEATH FROM user_tables;
먼저 보관할 테이블 이름을 사용하여 이 쿼리를 실행합니다.
SELECT CONCAT( 'DROP TABLE ', GROUP_CONCAT(table_name) , ';' )
AS statement FROM information_schema.tables
WHERE table_schema = 'mydatabase' AND table_name not in ('table1', 'table2', 'table3');
이 쿼리는 DROP 테이블 쿼리를 제공합니다.
- 왼쪽 목록에서 삭제할 모든 테이블을 선택합니다.워크시트에 끌어다 놓습니다.팝업 창에서 Object Name(개체 이름)을 선택합니다.
- Edit(편집) 메뉴를 누르고 Replace(교체)를 선택합니다.
- 찾기 필드에 쉼표 기호를 입력합니다.
,
- 바꾸기 필드에 다음 텍스트를 입력합니다.
;\ndrop table
. 단어 테이블 뒤에 공백이 있다는 점에 유의합니다.모두 바꿉니다. - 유형
drop table
당신의 첫번째 테이블 앞에서 그리고;
자네가 마지막으로 한 다음에 - 테이블을 내려놓을 준비가 되었습니다.
DECLARE
TYPE bulk_array is table of ALL_TABLES.TABLE_NAME%type;
array bulk_array;
BEGIN
SELECT OWNER ||'.'|| TABLE_NAME BULK COLLECT
INTO array
FROM ALL_TABLES
WHERE TABLE_NAME LIKE '%%';--HERE U WILL PUT YOUR CONDITIONS.
FOR i IN array.FIRST..array.LAST LOOP
EXECUTE IMMEDIATE 'DROP TABLE '|| array(i) || ' PURGE'; --Specify PURGE if you want to drop the table and release the space associated
END LOOP;
END;
당신이 보관하고 싶은 테이블이keep_tab1
,keep_tab2
, 그 외에 ASB부터 시작할 수 있습니다.
사용하다regexp_like
. 여기에 단지 예를 보여주기 위해.regexp_like
테이블 중 하나를 드롭하는 오류가 발생해도 루프는 계속됩니다.참조 테이블을 먼저 삭제하지 않고 기본 테이블을 삭제할 때 오류가 발생할 수 있으므로 이 스크립트를 여러 번 실행해야 할 수도 있습니다.
begin
for rec in (
select table_name from user_tables
where not
regexp_like(table_name, 'keep_tab1|keep_tab2|^ASB')
)
loop
begin
execute immediate 'drop table '||rec.table_name;
exception when others then
dbms_output.put_line(rec.table_name||':'||sqlerrm);
end;
end loop;
end;
언급URL : https://stackoverflow.com/questions/26968999/oracle-drop-multiple-table-in-a-single-query
'programing' 카테고리의 다른 글
스위프트 등화 프로토콜 (0) | 2023.09.07 |
---|---|
데이터 URL 파일 다운로드 (0) | 2023.09.07 |
NETWORK_ERROR: XMLHttpRequest 예외 101 (0) | 2023.09.07 |
다른 도메인으로 전환하고 사용자를 얻는 방법 (0) | 2023.09.07 |
MariaDB 대 Mysql 쿼리 문제 (0) | 2023.09.07 |