web-dev-qa-db-ja.com

`tsv`ファイルをpostgresql dbに挿入する

Tsvとして保存されているファイルがいくつかあります。それらをsqlで分析するために、postgresql dbに挿入します。

ただし、私の問題は、このTSVファイルを_postgresql 9.2_の下で_windows 7_にINSERT変換する方法です。

お返事ありがとうございます!

PS .:私は次のような正しい値でテーブルを作成しました:

CREATE TABLE ratings (distribution VARCHAR, votes VARCHAR, rank FLOAT, title VARCHAR);

ファイルはディレクトリにあります:

_C:/Users/testUser/Desktop/TSV/ratings.list.tsv_

20
Anna.Klee

タブ区切り値の場合、COPYを使用できます。

http://www.postgresql.org/docs/current/static/sql-copy.html

ファイルの正確な形式に応じて、次のようになります。

COPY ratings FROM 'C:/Users/testUser/Desktop/TSV/ratings.list.tsv' DELIMITER '\t'
14

あなたはこのようなものが欲しい:

COPY ratings FROM 'C:/Users/testUser/Desktop/TSV/ratings.list.tsv' DELIMITER E'\t';

E'\t'は必須です。それ以外の場合は、次のようなエラーが発生します。

エラー:COPYの区切り文字は1つの半角文字でなければなりません


TSVの列がテーブルと完全に一致しない場合は、次の手順でマッピングを定義することもできます。

COPY ratings (column_1, column_2, ... column_n)
  FROM 'C:/Users/testUser/Desktop/TSV/ratings.list.tsv'
  DELIMITER E'\t';
22
Ryan Atallah

csvsql from csvkit でこれを行うことができます。

TSV(またはCSV)を読み取り、それをテーブルに作成/挿入するには、コマンドラインスクリプトは次のようになります。

csvsql --insert input.tsv  --table table_t --tabs --no-constraints --db postgresql://user:passwd@localhost/mydb
2
philshem

悲しいことですが、最も簡単な方法は、TSVをCSVに変換することです。空の文字列をnullに変換したり、ヘッダーをスキップしたりするために組み込まれているPostgresインポートユーティリティのほとんどはCSVのみです。

この単純な 6行Python answer on SO を参照してください。TSVを1時間試してみた後、Postgresで問題なくCSVを通常どおりロードしました。

0
Joseph Lust