CSV ファイルから postgreSQL テーブルにデータをインポートしています。
テーブルは次のようになります。
CREATE TABLE foo_stats (
td DATE NOT NULL,
ins_id INTEGER CHECK (ins_id > 0) NOT NULL,
df_id INTEGER CHECK (df_id > 0) NOT NULL,
pc REAL NOT NULL DEFAULT 0.0,
ph REAL DEFAULT 0.0 NOT NULL,
pl REAL DEFAULT 0.0 NOT NULL,
av REAL DEFAULT 0.0 NOT NULL,
cv BIGINT DEFAULT 0 NOT NULL,
avi REAL DEFAULT 0.0 NOT NULL,
cmi BIGINT DEFAULT 0 NOT NULL,
vwp REAL CHECK (vwp >= 0) NOT NULL,
atr REAL NOT NULL DEFAULT -99999,
pv REAL NOT NULL DEFAULT -99999,
pr REAL NOT NULL DEFAULT -99999,
PRIMARY KEY (ins_id, df_id, td)
);
一括コピーの前に、次を使用して主キーを削除しますALTER TABLE DROP CONSTRAINT PRIMARY KEY
COPY
psql CLI でコマンドを呼び出したときの CL のトレースを次に示します。
mydb=# COPY foo_stats FROM '/path/to/data/foo_stats.csv' WITH CSV;
ERROR: invalid input syntax for integer: "1990-01-02"
CONTEXT: COPY foo_stats, line 1, column id: "1990-01-02"
mydb=#
入力 CSV ファイルの最初の数行は次のようになります。
"1990-01-02",388,3,-99999,0.913,0.91,0.0,0,0.0,0,0,-99999,-99999,-99999
"1990-01-02",388,4,-99999,0.913,0.91,0.0,0,0.0,0,0,-99999,-99999,-99999
"1990-01-02",388,1,-99999,0.913,0.91,0.0,0,0.0,0,0,-99999,-99999,-99999
"1990-01-02",388,7,-99999,0.913,0.91,0.0,0,0.0,0,0,-99999,-99999,-99999
"1990-01-02",388,6,-99999,0.913,0.91,0.0,0,0.0,0,0,-99999,-99999,-99999
入力ファイルのデータ列は、テーブル スキーマと同じ順序になっています。エラーメッセージが表示される理由を誰か説明できますか?
PS: Ubuntu 10.0.4 LTS で PostgreSQL 8.4 を使用しています。