Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

PostgreSQL のデータを Parquet、CSV、または JSON にエクスポートするには?

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'"

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スクリプト、あるいは任意の別プロセスに簡単にストリーミングできます。

Navigation