메인 콘텐츠로 건너뛰기

PostgreSQL 데이터를 Parquet, CSV 또는 JSON으로 내보내는 방법

이는 clickhouse-local로 쉽게 수행할 수 있습니다:
  • 데이터를 읽으려면 postgresql 테이블 함수를 사용합니다
  • INTO OUTFILE _filename_ FORMAT 절을 사용해 원하는 출력 형식을 지정합니다
출력 형식은 ClickHouse에서 지원하는 출력 형식 중 아무 것이나 사용할 수 있습니다. 몇 가지 예시를 살펴보겠습니다… 이 예시에서는 ClickHouse 실행 파일의 일부인 clickhouse-local을 사용합니다. 다음 명령으로 다운로드하십시오:
curl https://clickhouse.com/ | sh

PostgreSQL을 Parquet로 내보내기

postgresql 테이블 함수는 원격 PostgreSQL 서버에 저장된 데이터에 대해 SELECT(및 INSERT) 쿼리를 실행할 수 있게 해줍니다. 예를 들어, PostgreSQL에 있는 테이블의 전체 내용을 보려면 다음과 같습니다.
SELECT *
FROM
   postgresql(
    'localhost:5432',
    'postgres_database',
    'postgres_table',
    'user',
    'password'
);
이 쿼리의 출력은 INTO OUTFILE을 사용해 파일로 저장할 수 있습니다. 생성할 파일의 포맷은 FORMAT으로 지정하십시오. PostgreSQL 테이블의 전체 내용을 가져와 Parquet 파일로 내보내겠습니다:
./clickhouse local -q "SELECT * FROM
   postgresql(
    'localhost:5432',
    'postgres_database',
    'postgres_table',
    'user',
    'password'
)
INTO OUTFILE 'my_output_file.parquet'"
출력 파일 이름에 .parquet 확장자가 있으므로 ClickHouse는 Parquet 포맷을 사용한다고 가정합니다. 따라서 FORMAT Parquet 절은 생략했습니다.

PostgreSQL을 CSV로 내보내기

Parquet로 내보낼 때와 동일하지만, 출력 파일 이름만 더 적절하게 지정합니다:
./clickhouse local -q "SELECT * FROM
   postgresql(
    'localhost:5432',
    'postgres_database',
    'postgres_table',
    'user',
    'password'
)
INTO OUTFILE 'my_output_file.csv'"
이제 끝입니다! ClickHouse는 출력 파일 이름의 .csv 확장자를 감지해 데이터를 쉼표로 구분된 형식으로 출력합니다. 그 외에는 위의 명령과 완전히 동일합니다.

PostgreSQL을 JSON으로 내보내기

PostgreSQL에서 JSON으로 내보내려면 파일 이름만 바꾸면 되며, ClickHouse가 포맷을 자동으로 인식합니다:
./clickhouse local -q "SELECT * FROM
   postgresql(
    'localhost:5432',
    'postgres_database',
    'postgres_table',
    'user',
    'password'
)
INTO OUTFILE 'my_output_file.ndjson'"
여기서 끝낼 필요는 없습니다. clickhouse-local을 사용하면 PostgreSQL에서 데이터를 가져와 모든 출력 포맷으로 보낼 수 있습니다.ClickHouse가 파일 확장자로 출력 형식을 판단하지 못하거나, 사용할 포맷을 명시적으로 선택하려면 FOMRAT 절을 추가하십시오.
./clickhouse local -q "SELECT * FROM
   postgresql(
    'localhost:5432',
    'postgres_database',
    'postgres_table',
    'user',
    'password'
)
INTO OUTFILE 'my_output_file.ndjson'
FORMAT JSONEachRow"

PostgreSQL을 다른 프로세스로 스트리밍하기

INTO OUTFILE 대신 테이블 함수의 결과를 다른 프로세스로 스트리밍할 수 있습니다. 다음은 구문을 보여주는 간단한 예시입니다. Linux wc -l 명령을 사용해 행 수를 계산합니다:
./clickhouse local -q "SELECT *
FROM s3('https://datasets-documentation.s3.eu-west-3.amazonaws.com/house_parquet/house_0.parquet'
FORMAT JSONEachRow
)" | wc -l
하지만 행 데이터를 셸 스크립트, Python 스크립트 또는 원하는 다른 프로세스로 쉽게 전달할 수 있습니다.
마지막 수정일 2026년 6월 10일