반응형
psql
에서 여러 개의 테이블을 삭제하는 방법을 몇 가지 정리해줄게.
1. 개별적으로 여러 개의 테이블 삭제
가장 기본적인 방법은 DROP TABLE
문을 여러 번 실행하는 것.
DROP TABLE table1, table2, table3;
- 쉼표(
,
)로 여러 개의 테이블을 한 번에 삭제할 수 있음.
2. 특정 패턴을 가진 테이블 삭제 (LIKE
사용)
특정 이름 패턴을 가진 테이블을 삭제하고 싶다면, pg_catalog.pg_tables
을 이용하여 DROP TABLE
을 생성하면 됨.
DO $$
DECLARE
r RECORD;
BEGIN
FOR r IN (SELECT tablename FROM pg_tables WHERE schemaname = 'public' AND tablename LIKE 'temp_%') LOOP
EXECUTE 'DROP TABLE IF EXISTS ' || quote_ident(r.tablename) || ' CASCADE';
END LOOP;
END $$;
LIKE 'temp_%'
:temp_
로 시작하는 모든 테이블 삭제LIKE '%_temp'
:_temp
로 끝나는 모든 테이블 삭제CASCADE
: 외래 키 제약이 있는 경우 연쇄적으로 삭제
3. 스키마 내 모든 테이블 삭제
특정 스키마 내의 모든 테이블을 삭제하고 싶다면:
DO $$
DECLARE
r RECORD;
BEGIN
FOR r IN (SELECT tablename FROM pg_tables WHERE schemaname = 'my_schema') LOOP
EXECUTE 'DROP TABLE IF EXISTS my_schema.' || quote_ident(r.tablename) || ' CASCADE';
END LOOP;
END $$;
'my_schema'
부분을 원하는 스키마명으로 변경
4. 모든 테이블을 한 번에 삭제 (주의!)
만약 특정 스키마의 모든 테이블을 삭제하고 싶다면, TRUNCATE
또는 DROP SCHEMA
를 활용할 수도 있음.
4.1. 특정 스키마의 모든 테이블 삭제
DO $$
DECLARE
r RECORD;
BEGIN
FOR r IN (SELECT tablename FROM pg_tables WHERE schemaname = 'public') LOOP
EXECUTE 'DROP TABLE IF EXISTS public.' || quote_ident(r.tablename) || ' CASCADE';
END LOOP;
END $$;
4.2. 스키마 자체를 삭제 후 다시 생성
DROP SCHEMA my_schema CASCADE;
CREATE SCHEMA my_schema;
- 이 방법은 스키마 자체를 삭제하기 때문에 모든 테이블, 시퀀스, 뷰 등이 사라짐.
- 이후 다시 사용할 경우
CREATE SCHEMA
로 복원.
5. 모든 테이블을 TRUNCATE
로 비우기
테이블을 삭제하지 않고 데이터만 비우고 싶다면:
TRUNCATE TABLE table1, table2, table3 RESTART IDENTITY CASCADE;
RESTART IDENTITY
:SERIAL
또는IDENTITY
컬럼의 카운터를 초기화CASCADE
: 외래 키를 가진 테이블도 함께 초기화
🔥 결론
방법 | 사용 사례 |
---|---|
DROP TABLE table1, table2; |
테이블 몇 개만 삭제 |
DROP TABLE IF EXISTS table1, table2 CASCADE; |
존재할 수도 있는 테이블 삭제 |
LIKE 'temp_%' |
특정 패턴의 테이블 삭제 |
DROP SCHEMA my_schema CASCADE; |
스키마 전체 삭제 |
TRUNCATE TABLE table1, table2 RESTART IDENTITY; |
데이터만 비우기 |
반응형
'DB > PostgreSQL' 카테고리의 다른 글
[ PostgreSQL ] CREATE - 스키마 생성하기 (0) | 2025.03.12 |
---|---|
[ PostgreSQL ] Schema를 사용하는 이유 (0) | 2025.03.12 |
[ Postgresql ] ORDER BY - 정렬 적용해서 query 하기 (0) | 2025.01.08 |
[ Postgresql ] psql - dump한 파일 복원하기 (0) | 2025.01.08 |
[ Postgresql ] \l+, \dt+ - 데이터베이스, Table 크기 확인하기 (0) | 2025.01.08 |