如何导入缺少值的表?

11 postgresql bulk-load

我使用篮球数据表来了解Postgres 9.2和phppgadmin.因此,我想将csv表导入该数据库.但是,我得到:

ERROR:  missing data for column "year"
CONTEXT:  COPY coaches, line 1: ""coachid";"year";"yr_order";"firstname";"lastname";"season_win";"season_loss";"playoff_win";"playoff..."
Run Code Online (Sandbox Code Playgroud)

用命令:

\copy coaches FROM '/Users/Desktop/Database/NBAPostGres/DataOriginal/coaches_data.csv' DELIMITER ',' CSV;
Run Code Online (Sandbox Code Playgroud)

当前表没有错过.所以我的问题是:

  1. 我错了什么,如果使用缺少值的表?

  2. 如何导入这样的表或处理这种结构一般(也就缺失值而言)?

数据结构:

 coachid    year    yr_order    firstname   lastname    season_win
 HAMBLFR01  204        2          Frank     Hamblen         10
 RUSSEJO01  1946       1          John      Russell         22
Run Code Online (Sandbox Code Playgroud)

我用了:

 varchar     integer   integer  character    character     integer
Run Code Online (Sandbox Code Playgroud)

Erw*_*ter 22

您可以为整个表保留列.告诉COPY(或psql的包装\copy),只填补那些列追加一列清单表,例如:

\copy coaches (coachid, yr_order, firstname)
FROM '/Users/.../coaches_data.csv' (FORMAT csv, HEADER, DELIMITER ',');
Run Code Online (Sandbox Code Playgroud)

缺省值用列默认值填充.每个文件:

如果表中有任何列不在列列表中, COPY FROM则会插入这些列的默认值.

但是,对于某些行,您不能缺少值.那是不可能的.可以使用文本表示(覆盖相应的列默认值).NULL

这一切都在手册中,真的: