概要:このチュートリアルでは、PostgreSQLテーブルからCSVファイルにデータをエクスポートするさまざまなテクニックを学びます。
前回のチュートリアルでは、CSVファイルからテーブルにデータをインポートする方法を紹介しました。 ここでは、CSVファイルからデータをインポートするために作成したpersons
テーブルを使用します。
persons
テーブルのデータを確認してみましょう。
Code language: SQL (Structured Query Language) (sql)SELECT*FROMpersons;
テーブルには2つのレコードがあります。
COPY文を使ってテーブルのデータをCSVにエクスポートする
テーブルのデータをCSVファイルにエクスポートする最も簡単な方法は、COPY
persons
C:\tmp
persons_db.csv
という名前のCSVファイルにエクスポートしたい場合は、次のようなステートメントを使用します。
Code language: SQL (Structured Query Language) (sql)COPY persons TO 'C:\tmp\persons_db.csv' DELIMITER ',' CSV HEADER;
PostgreSQLは、persons
persons_db.csv
ファイルにエクスポートします。
場合によっては、テーブルのいくつかの列だけからデータをCSVファイルにエクスポートしたいことがあります。 そのためには、COPY
first_name
last_name
persons
email
person_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;
ヘッダをエクスポートしたくない場合は、以下のようになります。 テーブルのカラム名を含むヘッダーをエクスポートしたくない場合は、HEADER
COPY
persons
email
列のデータのみを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
を使用することができます。
\copy
COPY
文を実行します。 ただし、サーバーがCSVファイルを書き込む代わりに、psqlがCSVファイルを書き込み、データをサーバーからローカルファイルシステムに転送します。 \copy
コマンドを使用するには、ローカルマシンに対する十分な権限が必要です。 このコマンドにはPostgreSQLのスーパーユーザー権限は必要ありません。
例えば、persons
persons_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