모든 사용자 테이블을 삭제하는 방법
Oracle에서 모든 사용자 테이블을 드롭하려면 어떻게 해야 합니까?
나는 제약에 문제가 있다.모든 것을 무효로 해도, 아직 할 수 없습니다.
BEGIN
FOR cur_rec IN (SELECT object_name, object_type
FROM user_objects
WHERE object_type IN
('TABLE',
'VIEW',
'MATERIALIZED VIEW',
'PACKAGE',
'PROCEDURE',
'FUNCTION',
'SEQUENCE',
'SYNONYM',
'PACKAGE BODY'
))
LOOP
BEGIN
IF cur_rec.object_type = 'TABLE'
THEN
EXECUTE IMMEDIATE 'DROP '
|| cur_rec.object_type
|| ' "'
|| cur_rec.object_name
|| '" CASCADE CONSTRAINTS';
ELSE
EXECUTE IMMEDIATE 'DROP '
|| cur_rec.object_type
|| ' "'
|| cur_rec.object_name
|| '"';
END IF;
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line ('FAILED: DROP '
|| cur_rec.object_type
|| ' "'
|| cur_rec.object_name
|| '"'
);
END;
END LOOP;
FOR cur_rec IN (SELECT *
FROM all_synonyms
WHERE table_owner IN (SELECT USER FROM dual))
LOOP
BEGIN
EXECUTE IMMEDIATE 'DROP PUBLIC SYNONYM ' || cur_rec.synonym_name;
END;
END LOOP;
END;
/
정말 간단한 방법을 원한다면..과거에 사용한 스크립트입니다.
select 'drop table '||table_name||' cascade constraints;' from user_tables;
그러면 스키마 내의 모든 테이블에 대해 일련의 드롭 명령이 출력됩니다.이 쿼리 결과를 스풀하고 실행합니다.
출처 : https://forums.oracle.com/forums/thread.jspa?threadID=614090
마찬가지로 여러 테이블을 지우려면 필요에 따라 다음을 편집할 수 있습니다.
select 'drop '||object_type||' '|| object_name || ';' from user_objects where object_type in ('VIEW','PACKAGE','SEQUENCE', 'PROCEDURE', 'FUNCTION', 'INDEX')
나에게 효과가 있었던 또 다른 답변은 (credit to http://snipt.net/Fotinakis/drop-all-tables-and-constraints-within-an-oracle-schema/))입니다.
BEGIN
FOR c IN (SELECT table_name FROM user_tables) LOOP
EXECUTE IMMEDIATE ('DROP TABLE "' || c.table_name || '" CASCADE CONSTRAINTS');
END LOOP;
FOR s IN (SELECT sequence_name FROM user_sequences) LOOP
EXECUTE IMMEDIATE ('DROP SEQUENCE ' || s.sequence_name);
END LOOP;
END;
이 기능은 실행 직후에 동작합니다.여기에 있는 다른 답변과 같이 붙여넣어야 하는 스크립트는 생성되지 않습니다.DB에서 직접 실행됩니다.
begin
for i in (select 'drop table '||table_name||' cascade constraints' tbl from user_tables)
loop
execute immediate i.tbl;
end loop;
end;
가장 간단한 방법은 cascade 명령을 사용하여 개체를 소유한 사용자를 삭제하는 것입니다.
DROP USER username CASCADE
SELECT 'DROP TABLE "' || TABLE_NAME || '" CASCADE CONSTRAINTS;'
FROM user_tables;
user_tables사용자의 모든 테이블을 포함하는 시스템테이블입니다.SELECT 구에 의해 스크립트를 실행할 수 있는 모든 테이블에 대해 DROP 문을 생성합니다.
가장 쉬운 방법은 테이블스페이스를 드롭하고 테이블스페이스를 다시 작성하는 것입니다.하지만 난 그러지 않는 게 좋겠어.이것은 Henry와 비슷하지만, GUI의 결과 세트에 복사/붙여넣기만 하면 됩니다.
SELECT
'DROP'
,object_type
,object_name
,CASE(object_type)
WHEN 'TABLE' THEN 'CASCADE CONSTRAINTS;'
ELSE ';'
END
FROM user_objects
WHERE
object_type IN ('TABLE','VIEW','PACKAGE','PROCEDURE','FUNCTION','SEQUENCE')
oracle 내의 모든 개체를 삭제하려면:
1) 동적
DECLARE
CURSOR IX IS
SELECT * FROM ALL_OBJECTS WHERE OBJECT_TYPE ='TABLE'
AND OWNER='SCHEMA_NAME';
CURSOR IY IS
SELECT * FROM ALL_OBJECTS WHERE OBJECT_TYPE
IN ('SEQUENCE',
'PROCEDURE',
'PACKAGE',
'FUNCTION',
'VIEW') AND OWNER='SCHEMA_NAME';
CURSOR IZ IS
SELECT * FROM ALL_OBJECTS WHERE OBJECT_TYPE IN ('TYPE') AND OWNER='SCHEMA_NAME';
BEGIN
FOR X IN IX LOOP
EXECUTE IMMEDIATE('DROP '||X.OBJECT_TYPE||' SCHEMA_NAME.'||X.OBJECT_NAME|| ' CASCADE CONSTRAINT');
END LOOP;
FOR Y IN IY LOOP
EXECUTE IMMEDIATE('DROP '||Y.OBJECT_TYPE||' SCHEMA_NAME.'||Y.OBJECT_NAME);
END LOOP;
FOR Z IN IZ LOOP
EXECUTE IMMEDIATE('DROP '||Z.OBJECT_TYPE||' SCHEMA_NAME.'||Z.OBJECT_NAME||' FORCE ');
END LOOP;
END;
/
2) 정적
SELECT 'DROP TABLE "' || TABLE_NAME || '" CASCADE CONSTRAINTS;' FROM user_tables
union ALL
select 'drop '||object_type||' '|| object_name || ';' from user_objects
where object_type in ('VIEW','PACKAGE','SEQUENCE', 'PROCEDURE', 'FUNCTION')
union ALL
SELECT 'drop '
||object_type
||' '
|| object_name
|| ' force;'
FROM user_objects
WHERE object_type IN ('TYPE');
아래 단계를 따르세요.
begin
for i in (select 'drop table '||table_name||' cascade constraints' tb from user_tables)
loop
execute immediate i.tb;
end loop;
commit;
end;
purge RECYCLEBIN;
언급URL : https://stackoverflow.com/questions/1690404/how-to-drop-all-user-tables
'programing' 카테고리의 다른 글
| 다음 포스트 요청을 어떻게 처리할 것인가? (0) | 2023.03.16 |
|---|---|
| 경고:알 수 없는 DOM 속성 클래스입니다.className을 말하는 건가요? (0) | 2023.03.16 |
| React 컴포넌트에 이미지(.svg, .png)를 Import하는 방법 (0) | 2023.03.16 |
| 뒤로 버튼을 누를 때 추가된 데이터 기억 (0) | 2023.03.16 |
| get_module이 모든 투고를 반환하지 않음 (0) | 2023.03.16 |