EXPORT / IMPORT DATABASE 문
EXPORT / IMPORT DATABASE 문 (EXPORT and IMPORT DATABASE Statements)
EXPORT DATABASE 명령은 데이터베이스의 내용을 특정 디렉토리로 내보내는 기능이에요. IMPORT DATABASE 명령은 그 내용을 다시 읽어들이는 역할을 해요. 백업이나 이관 시에 아주 유용하죠.
출처: 문서
본문
EXPORT DATABASE 명령은 데이터베이스의 내용을 특정 디렉토리로 내보낼 수 있게 해요. IMPORT DATABASE 명령은 그 내용을 다시 읽을 수 있게 해줘요.
예시 (Examples)
데이터베이스를 대상 디렉토리 'target_directory'로 CSV 파일로 내보내기:
EXPORT DATABASE 'target_directory';
지정한 CSV 직렬화 옵션을 사용해 'target_directory'로 내보내기:
EXPORT DATABASE 'target_directory' (FORMAT csv, DELIMITER '|');
테이블을 Parquet으로 직렬화해 'target_directory'로 내보내기:
EXPORT DATABASE 'target_directory' (FORMAT parquet);
테이블을 Parquet으로 직렬화하고 Zstd로 압축하며 row_group_size를 100,000으로 해서 내보내기:
EXPORT DATABASE 'target_directory' (
FORMAT parquet,
COMPRESSION zstd,
ROW_GROUP_SIZE 100_000
);
데이터베이스를 다시 불러오기:
IMPORT DATABASE 'source_directory';
또는 PRAGMA를 사용할 수도 있어요:
PRAGMA import_database('source_directory');
Parquet 파일 작성에 대한 자세한 내용은 데이터 가져오기 섹션의 Parquet 파일 페이지와 COPY 문 페이지를 참고해요.
EXPORT DATABASE
EXPORT DATABASE 명령은 스키마 정보, 테이블, 뷰, 시퀀스를 포함한 데이터베이스의 전체 내용을 특정 디렉토리로 내보내며, 이후에 다시 로드할 수 있어요. 생성된 디렉토리는 다음과 같이 구성돼요:
target_directory/schema.sql
target_directory/load.sql
target_directory/t_1.csv
...
target_directory/t_n.csv
schema.sql 파일은 데이터베이스에 있는 스키마 문을 담고 있어요. 데이터베이스를 재구성하는 데 필요한 CREATE SCHEMA, CREATE TABLE, CREATE VIEW, CREATE SEQUENCE 명령을 모두 포함해요.
load.sql 파일은 CSV 파일에서 데이터를 다시 읽는 데 사용할 수 있는 COPY 문 집합을 담고 있어요. 스키마에 있는 모든 테이블에 대해 하나의 COPY 문이 들어 있어요.
문법 (Syntax)
IMPORT DATABASE
IMPORT DATABASE 명령을 다시 사용하거나, schema.sql 다음에 load.sql을 실행해서 수동으로 데이터를 다시 로드할 수 있어요.
IMPORT DATABASE는 새(빈) 데이터베이스로 가져오는 것을 전제로 해요.schema.sql은 일반CREATE문(OR REPLACE나IF NOT EXISTS없이)을 사용하므로, 이미 내보낸 객체 중 일부(예: 사용자 정의 타입)를 포함한 데이터베이스로 가져오면 "already exists" 에러로 실패해요. 빈 데이터베이스로 가져와야 해요.
문법 (Syntax)
더 알아보기 (Learn more)
- COPY 문 — 직렬화 세부 옵션.
- Parquet 파일 — Parquet 쓰기/읽기.