저는 postgresql을 사용하고 스키마에있는 모든 테이블을 삭제해야합니다. 명령 프롬프트에서 어떻게 삭제할 수 있습니까?
답변
CASCADE
DROP SCHEMA
의 div> 옵션. 문서 :
CASCADE
-스키마에 포함 된 개체 (테이블, 함수 등)를 자동으로 삭제합니다. 그리고 이러한 개체에 종속 된 모든 개체를 차례로 삭제합니다.
주의하십시오-저보다 강조합니다.
분명히 나중에 스키마를 다시 만들어야합니다.
현재 스키마의 모든 테이블을 삭제하려면 다음 스크립트를 사용할 수 있습니다.
DO $$ DECLARE tabname RECORD; BEGIN FOR tabname IN (SELECT tablename FROM pg_tables WHERE schemaname = current_schema()) LOOP EXECUTE "DROP TABLE IF EXISTS " || quote_ident(tabname.tablename) || " CASCADE"; END LOOP; END $$;
변경 WHERE schemaname = current_schema()
다른 스키마의 모든 테이블을 삭제하려는 경우
코멘트
답변
yourdb=# DROP SCHEMA *schema_name* CASCADE;
(Postgresql 9.6.3에서 방금 테스트했지만 이전 릴리스에서는 작동하지 않을 수 있음)
답변
@Techno Savvy
postgres 구문을 사용하여 테이블 삭제 :
select "-- drop table " || tablename || " cascade;" from pg_tables where tablename not like "pg%" and tablename not like "sql%";
결과 텍스트를 SQL 스크립트로 복사하거나 psql 터미널. 명령은 주석 처리되어 있습니다.
코멘트
- 문제는 특정 스키마에서 테이블을 삭제하는 것이 었습니다.
답변
이 작업을 수행하는 아주 간단한 방법을 원한다면 .. 여기에 내가 과거에 사용한 스크립트가 있습니다.
select "drop table "||table_name||" cascade constraints;" from user_tables;
스키마의 모든 테이블에 대한 일련의 삭제 명령을 인쇄합니다. 이 쿼리의 결과를 스풀링하고 실행합니다.
마찬가지로 더 많은 테이블을 지우려면 필요에 맞게 다음을 편집 할 수 있습니다.
select "drop "||object_type||" "|| object_name || ";" from user_objects where object_type in ("VIEW","PACKAGE","SEQUENCE", "PROCEDURE", "FUNCTION", "INDEX")
출처 : https://forums.oracle.com/forums/thread.jspa?threadID=614090
댓글
- 문제는 Oracle이 아니라 Postgres입니다.
LINE 2
? 1 행에있는 ' 무엇입니까?