我使用篮球数据表来了解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..."
使用命令:
\copy coaches FROM '/Users/Desktop/Database/NBAPostGres/DataOriginal/coaches_data.csv' DELIMITER ',' CSV;
当前表没有错过。所以我的问题是:
我错了什么,如果使用缺少值的表格?
如何导入此类表格或处理此类结构(也就缺失值而言)?
数据结构:
coachid year yr_order firstname lastname season_win
HAMBLFR01 204 2 Frank Hamblen 10
RUSSEJO01 1946 1 John Russell 22
我用过:
varchar integer integer character character integer
答案 0 :(得分:20)
整个表可能缺少列。告诉COPY
(或psql包装器\copy
)仅填充将列列表附加到表中的那些列,例如:
\copy coaches (coachid, yr_order, firstname)
FROM '/Users/.../coaches_data.csv' (FORMAT csv, HEADER, DELIMITER ',');
缺少列使用列默认值填充。 Per documentation:
如果表中有任何列不在列列表中,
COPY FROM
将插入这些列的默认值。
但是不能 只有一些行缺少值。那是不可能的。可以使用NULL
的文本表示(覆盖相应的列默认值)。
这一切都在手册中,真的:
答案 1 :(得分:1)
错误:列“年”缺少数据背景:COPY教练,第1行: “” coachid “;” 年 “” yr_order “;” 姓名 “;” 姓 “” season_win “;” season_loss “;” playoff_win “;” 淘汰赛...“
此类错误也是表格不匹配的结果。将文本文件导入的表具有比文本文件更多的列或更少的列。