2012-12-07 103 views
2

我需要上傳一個csv文件到postgresql數據庫表。 像postgresql導入csv文件

A   B    C  D    E  F 

16777216 16777471  AU  AUSTRALIA  OC  OCEANIA 
16777472 16778239  CN  CHINA   AS  ASIA 
16778240 16779263  AU  AUSTRALIA  OC  OCEANIA 
16779264 16781311  CN  CHINA   AS  ASIA 

和表中的CSV文件

CREATE TABLE ipligence 
(
    ip_from numeric(11,0) NOT NULL DEFAULT 0, 
    ip_to numeric(11,0) NOT NULL DEFAULT 0, 
    country_code character varying(10)[] NOT NULL, 
    country_name character varying(225)[] NOT NULL, 
    continent_code character varying(10)[] NOT NULL, 
    continent_name character varying(255)[] NOT NULL, 
    CONSTRAINT ipligence_pkey PRIMARY KEY (ip_to) 
) 
WITH (
    OIDS=FALSE 
); 
ALTER TABLE ipligence 

,我使用pgsql的複製命令,

copy ipligence 
from '/home/pgsql/ipligence-lite.csv' 
delimiter as ',' 
csv quote as '"'; 

,但它顯示

ERROR: array value must start with "{" or dimension information 
    CONTEXT: COPY ipligence, line 1, column country_code: "AU" 

怎麼能我成功輸入csv f回到postgresql數據庫。謝謝!

+1

你爲什麼試圖在你的表中使用varchar數組作爲國家和洲的列? –

回答

3

您的表格創建不正確。例如,此列聲明:

country_code character varying(10)[] NOT NULL, 

正在創建varchar(10)的數組。你只需要一個。在這些列上刪除[]

此外,您發佈的示例數據實際上並不是以逗號分隔的,但我假定實際的數據文件是。