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 REPLACEIF NOT EXISTS 없이)을 사용하므로, 이미 내보낸 객체 중 일부(예: 사용자 정의 타입)를 포함한 데이터베이스로 가져오면 "already exists" 에러로 실패해요. 빈 데이터베이스로 가져와야 해요.

문법 (Syntax)

더 알아보기 (Learn more)