2016-05-20 26 views
3

Unixのタイムスタンプ値を含むCSVファイルをPostgresにコピーする方法は本当に明確ではありません。たとえば、のは、私はこのようになりますCSVファイルを持っているとしましょう:Unixのタイムスタンプ値を持つPostgresへのCSVデータのコピー

timestamp, column_1, column_2, column_3 
1439935260;"A";"B";"C" 
1439935261;"A";"B";"C" 
1439935262;"A";"B";"C" 

私も次の列を持つデータベースがあります。

timestamp | timestamp without time zone | 
column_1  | character varying(40)  | 
column_2  | timestamp without time zone | 
column_3  | timestamp without time zone | 

を、私は、コマンドに

\copy my_table FROM 'my_file.csv' DELIMITER ';' CSV HEADER; 
を期待します

は動作しますが、まだ動作しません。エラーが発生する

ERROR: date/time field value out of range: "1439935260"

UNIXタイムスタンプ値のCSVファイルをテーブルにコピーする適切な方法は何ですか?

+1

直接コピーすることはできません。多くのデータがない場合は、適切なタイムスタンプ –

+0

に "unix"値を変換する必要があります。そのテーブルに挿入する前にトリガを作成することができます。その機能は 'NEW 'を行います。timestamp" = to_timestamp(NEW。 "timestamp") 'COPY'のインポートにテーブルの目的が常に使用されている場合 –

+0

@VaoTsun:この場合はBEFOREの前にクエリがキャンセルされるため、トリガーのハックはできませんステージを挿入します。 –

答えて

0

をデータベース管理者に私の答えをチェックし、私はそれが新しいテーブルの場合

  1. がテーブルabstime上のタイプを作る示唆しています。
  2. タイプを変更すると、テーブル上でALTERステートメントが実行されます。
関連する問題