* CSVでインポート・エクスポート [#a0a486c9]


** CSVを読み取る [#tc475968]
 COPY user_table ( user_id, name, age) from '/tmp/user.csv' WITH CSV;

** CSVで表示(デリミタの変更) [#k3ad6939]
 \pset tuples_only 
 \pset pager off
 \pset format unaligned
 \pset fieldsep ','

** 結果をファイルに書き出す [#fb5b9538]
 \o '/tmp/result'
 select * from users;
 \o   (で元に戻す)

** (シェルから)検索結果をCSVに出力する [#x922ecfb]
 echo "select * from users" | psql -A -F ',' -t -U postgres some_db > users.csv
 
 -A 位置揃え無しの出力モード
 -F 'sep' フィールド区切り文字の指定
 -t ヘッダフッタを抑制する

** COPY [#q1f1dcad]
** COPY (SQLコマンド)[#q1f1dcad]
 COPY (SELECT * FROM users LIMIT 3) TO '/tmp/users.csv' 
   (FORMAT 'csv', QUOTE '"', FORCE_QUOTE *, NULL " ", HEADER 1);

- super userで実行する必要がある。
- ファイルはPostgreSQLサーバ上に作成される。

*** 参考 [#s329e0c6]
http://www.postgresql.jp/document/9.2/html/sql-copy.html
http://www.postgresql.jp/document/9.6/html/sql-copy.html

** \copy (psqlコマンド) [#b6dc773a]

 \copy ( SELECT * FROM users ) TO '/tmp/users.csv' with DELIMITER ',' NULL '' CSV HEADER

- super userでなくても実行できる。
- ファイルはpsqlコマンドを実行したホスト上に作成される。
- \copyコマンドは1行で入力する。改行してはいけない。

*** 参考 [#k32ce65d]
http://www.postgresql.jp/document/9.6/html/app-psql.html#app-psql-meta-commands-copy


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS