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