postgresql - 如何导入缺失值的表?

标签 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..."

使用命令:

\copy coaches FROM '/Users/Desktop/Database/NBAPostGres/DataOriginal/coaches_data.csv' DELIMITER ',' CSV;

当前表格没有遗漏。所以我的问题是:

  1. 我做错了什么,如果使用包含缺失值的表?

  2. 一般如何导入这样的表或处理这样的结构(包括缺失值)?

数据结构:

 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

最佳答案

整个表格您可以缺少列。告诉 COPY(或 psql 包装器 \copy)通过将列列表附加到表中来仅填充选定的列:

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

缺失值用列默认值填充。 The manual :

If there are any columns in the table that are not in the column list, COPY FROM will insert the default values for those columns.

但是您不能只是某些 行缺少值。那是不可能的。可以使用 NULL 的文本表示(否决相应的列默认值)。

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

关于postgresql - 如何导入缺失值的表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25593338/

相关文章:

sql - 简单的SQL路径查询?

hadoop - 我可以在 hbase 中进行单元格合并吗?

mysql - 哪些 mysql 设置会影响 LOAD DATA INFILE 的速度?

php mysqli/multi_query 不能进行多次

SQL根据条件插入现有表

sql - Postgresql:通过通配符和带索引的比较运算符在 JSON 数组中查找值

hadoop - Hbase 批量加载 - Map Reduce 作业失败

hadoop - Hbase 中的区域拆分

Python KeyError : <peewee. IntegerField 对象在 ... > 使用 peewee insert_many()

postgresql - 公共(public)和私有(private)gpg key 存储在哪里?