PostgreSQLのテーブルデータを出力する方法①

PostgreSQLのCOPYコマンド postgreSQL

最近に、PostgreSQLをよく使って、データをCSV、TSVに出力する方法をまとめました。
出力したデータをテーブルに登録する方法も紹介します。

コマンドまとめ

データベースサーバに配置できるなら、COPY コマンドを使用する。
クライアントにしか配置できないなら、\copy コマンドを使用する。

事前準備

説明する前に、テーブルを作成します。
CREATE TABLE test (
  id varchar(4) NOT NULL,
  name varchar(20),
  age INTEGER,
  PRIMARY KEY (id)
);
INSERT INTO test values(‘0001′,’fuji’,99);
INSERT INTO test values(‘0002’,null,88);

COPY コマンド

psqlに入ってから、COPYコマンドを使える。
注意点のは出力先は<PostgreSQLサーバ>です。

カンマ区切り(CSV)

COPY (テーブル名) TO ‘(ファイルパス)’ WITH CSV DELIMITER ‘,’;
実行例:
postgres=# COPY test TO ‘/tmp/postgresql/test.csv’ with csv delimiter ‘,’;
COPY 2

タブ区切り(TSV)

COPY (テーブル名) TO ‘(ファイルパス)’ WITH CSV DELIMITER E’\t’;
実行例:
postgres=# COPY test TO ‘/tmp/postgresql/test.tsv’ with csv delimiter E’\t’;
COPY 2

カラム名出力

COPY (テーブル名) TO ‘(ファイルパス)’ WITH CSV DELIMITER E’\t’ HEADER;
実行例:
postgres=# COPY test TO ‘/tmp/postgresql/test.tsv’ with csv delimiter E’\t’ HEADER;
COPY 2

「”(QUOTE)」で囲み

COPY (テーブル名) TO ‘(ファイルパス)’ WITH CSV DELIMITER E’\t’ FORCE QUOTE * HEADER;
実行例:
postgres=# COPY test TO ‘/tmp/postgresql/test.tsv’ with csv delimiter E’\t’ HEADER FORCE QUOTE *;
COPY 2

\copy コマンド

クライアント側にファイルを出力する。COPYと同じ方法で実行できる。RDSの場合、\copyコマンドがおすすめです。

\COPY (テーブル名) TO ‘(ファイルパス)’ WITH CSV DELIMITER E’\t’ FORCE QUOTE * HEADER;
実行例:
postgres=# \COPY test TO ‘/tmp/postgresql/test.tsv’ with csv delimiter E’\t’ HEADER FORCE QUOTE *;
COPY 2

CSVファイルをテーブルに挿入

csvファイルを出力するコマンドと同じで、TOをFROMにするとインポートできる

COPY (テーブル名) FROM ‘(ファイルパス)’ WITH CSV DELIMITER E’\t’ HEADER;
実行例:
postgres=# COPY test FROM ‘/tmp/postgresql/test.tsv’ with csv delimiter E’\t’ HEADER;
COPY 2
タイトルとURLをコピーしました