LoginSignup
40
39

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

Last updated at Posted at 2014-09-02

昔の俺

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 さんからコメントいただいた。上記ページ最下部にある「互換性」の書き方には沿っていたらしい。
40
39
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
40
39