PostgreSQL 데이터를 Parquet, CSV 또는 JSON으로 내보내는 방법
이는 clickhouse-local로 쉽게 수행할 수 있습니다:
- 데이터를 읽으려면
postgresql테이블 함수를 사용합니다 INTO OUTFILE _filename_ FORMAT절을 사용해 원하는 출력 형식을 지정합니다
출력 형식은 ClickHouse에서 지원하는 출력 형식 중 아무 것이나 사용할 수 있습니다. 몇 가지 예시를 살펴보겠습니다…
이 예시에서는 ClickHouse 실행 파일의 일부인 clickhouse-local을 사용합니다. 다음 명령으로 다운로드하십시오:
curl https://clickhouse.com/ | shPostgreSQL을 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'"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'"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 스크립트 또는 원하는 다른 프로세스로 쉽게 전달할 수 있습니다.