\copy コマンドを使用して PostgreSQL DB インスタンスのテーブルにデータをインポートする
PostgreSQL の \copy
コマンドは、psql
の対話型クライアントツールでメタコマンドを利用できます。\copy
を使うと、RDS for PostgreSQL DB インスタンスで、テーブルにデータをインポートできます。\copy
コマンドを使うには、まず対象のDB インスタンスにテーブル構造を作成して、\copy
がデータをコピーする先を用意する必要があります。
\copy
を使用すると、クライアントのワークステーションにエクスポートして保存しておいた、カンマ区切り値 (CSV) 形式のファイルなどから、データを読み込むことができます。
CSV データを対象の RDS for PostgreSQL DB インスタンスにインポートするには、まず psql
を使用して、対象の DB インスタンスに接続します。
psql --host=
db-instance.111122223333
.aws-region
.rds.amazonaws.com --port=5432 --username=postgres
--password --dbname=target-db
その後、次のパラメータを指定して \copy
コマンドを実行し、対象のデータとその形式を識別します。
-
target_table
— CSV ファイルからコピーされるデータを受け取るテーブルの名前。 -
column_list
— テーブルの列の仕様。 -
'filename'
— ローカルワークステーションにある CSV ファイルの絶対パス。
\copy
target_table
from '/path/to/local/filename.csv
' WITH DELIMITER ',' CSV;
CSV ファイルに列見出しがある場合は、このバージョンのコマンドとパラメータを使用できます。
\copy
target_table
(column-1
,column-2
,column-3
,...
) from '/path/to/local/filename.csv
' WITH DELIMITER ',' CSV HEADER;
\copy
コマンドが失敗した場合は、PostgreSQL はエラーメッセージを出力します。
以下の例で示すように、\copy
メタコマンドを指定した psql
コマンドで、データベースプレビュー環境に新しい DB インスタンスを作成します。この例では、ソーステーブル名として source-table、.csv ファイルとして source-table.csv、ターゲットデータベースとして target-db を使用しています。
Linux、macOS、Unix の場合:
$psql target-db \ -U <admin user> \ -p <port> \ -h <DB instance name> \ -c "\copy source-table from 'source-table.csv' with DELIMITER ','"
Windows の場合:
$psql target-db ^ -U <admin user> ^ -p <port> ^ -h <DB instance name> ^ -c "\copy source-table from 'source-table.csv' with DELIMITER ','"
\copy
コマンドの詳細については、PostgreSQL のドキュメント の 「psql