概要:このチュートリアルでは、PostgreSQLテーブルからCSVファイルにデータをエクスポートするさまざまなテクニックを学びます。
前回のチュートリアルでは、CSVファイルからテーブルにデータをインポートする方法を紹介しました。 ここでは、CSVファイルからデータをインポートするために作成したpersonsテーブルを使用します。

persons テーブルのデータを確認してみましょう。
Code language: SQL (Structured Query Language) (sql)SELECT*FROMpersons;

テーブルには2つのレコードがあります。
COPY文を使ってテーブルのデータをCSVにエクスポートする
テーブルのデータをCSVファイルにエクスポートする最も簡単な方法は、COPYpersonsC:\tmppersons_db.csvという名前のCSVファイルにエクスポートしたい場合は、次のようなステートメントを使用します。
Code language: SQL (Structured Query Language) (sql)COPY persons TO 'C:\tmp\persons_db.csv' DELIMITER ',' CSV HEADER;
PostgreSQLは、personspersons_db.csvファイルにエクスポートします。

場合によっては、テーブルのいくつかの列だけからデータをCSVファイルにエクスポートしたいことがあります。 そのためには、COPYfirst_namelast_namepersonsemailperson_partial_db.csv
Code language: SQL (Structured Query Language) (sql)COPY persons(first_name,last_name,email) TO 'C:\tmp\persons_partial_db.csv' DELIMITER ',' CSV HEADER;

ヘッダをエクスポートしたくない場合は、以下のようになります。 テーブルのカラム名を含むヘッダーをエクスポートしたくない場合は、HEADERCOPYpersonsemail列のデータのみをCSVファイルにエクスポートします。
Code language: SQL (Structured Query Language) (sql)COPY persons(email) TO 'C:\tmp\persons_email_db.csv' DELIMITER ',' CSV;

COPYコマンドで指定したCSVファイル名は、サーバーが直接書き込まなければならないことに注意してください。 つまり、CSVファイルはあなたのローカルマシンではなく、データベースサーバーのマシンに置かれていなければなりません。
テーブルからCSVファイルにデータをエクスポートするには、\copyコマンドを使用します
リモートのPostgreSQLデータベースサーバーにアクセスできるが、ファイルに書き込むための十分な権限がない場合、PostgreSQLの組み込みコマンド\copyを使用することができます。
\copyCOPY文を実行します。 ただし、サーバーがCSVファイルを書き込む代わりに、psqlがCSVファイルを書き込み、データをサーバーからローカルファイルシステムに転送します。 \copyコマンドを使用するには、ローカルマシンに対する十分な権限が必要です。 このコマンドにはPostgreSQLのスーパーユーザー権限は必要ありません。
例えば、personspersons_client.csvファイルにエクスポートしたい場合、psqlクライアントから以下のように\copyコマンドを実行できます。
Code language: SQL (Structured Query Language) (sql)\copy (SELECT * FROM persons) to 'C:\tmp\persons_client.csv' with csv
このチュートリアルでは、COPY\copyコマンドを使用して、テーブルからCSVファイルにデータをエクスポートする方法を紹介しました。
- このチュートリアルは役に立ちましたか?
- YesNo