Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
39
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

PostgreSQLのCOPYコマンドでヘッダ付きtsvファイルを読み込む

昔の俺

PostgreSQLで以下のように普通にCOPYコマンドを打つ場合、読み込むデータのヘッダは無視されない。

copy table_name from '/absolute_path/to/data.tsv';

そのため、ヘッダなしでデータを作ることになる。
しかし、ヘッダがないとパッと見て何の値か分かりにくい。カラム数が多いテーブルのテストデータを作っている時は特に。
なんとかヘッダ付きのtsvファイルを読み込ませたい。。

今の俺

いろいろ試した結果、以下のように書けばヘッダ付きのtsvを読み込むことが出来た。

copy table_name from '/absolute_path/to/data.tsv' delimiter '    ' csv header;

[追記 2014/09/08]
@s87 さんからコメントいただいた。上記は以前のバージョンでの書き方のようで、カッコを付けて記載すればマニュアル記載の構文で実行出来た。

copy table_name from '/absolute_path/to/data.tsv' ( delimiter '    ', format csv, header true );

delimiterの文字にはタブを入力する。(ターミナルで Ctrl+v を押してからタブ押下)
csvファイルヘッダ付きで区切りはタブ文字、的な指定になっている。

正直マニュアルに載っている書き方と全然違うと思うのだが、何故出来るのか。
https://www.postgresql.jp/document/9.3/html/sql-copy.html

まあ出来てくれてありがたいことには変わりないので気にしない。

[追記 2014/09/08]
@tsugai さんからコメントいただいた。上記ページ最下部にある「互換性」の書き方には沿っていたらしい。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
39
Help us understand the problem. What are the problem?