【发布时间】:2015-10-22 00:15:21
【问题描述】:
我正在尝试将数据从 CSV 导入表中。问题是即使使用CSV HEADER,CSV 也是基于列索引导入的,而不是基于该列的标题。
CREATE TABLE denominations (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL
);
CREATE TABLE churches (
id SERIAL PRIMARY KEY,
-- NOT relevant here
address_id INTEGER REFERENCES addresses,
denomination_id INTEGER NOT NULL REFERENCES denominations,
name VARCHAR(100) NOT NULL
);
我的 CSV 文件如下所示:
id,name
1,Southern Baptist Convention
2,Nondenominational
3,Catholic
4,Presbyterian
id,denomination_id,name,address_id
1,1,Saddleback Church,
2,4,First Presbyterian Church,
3,3,St. Elizabeth's Church,
4,3,St Monica Catholic Community,
5,2,Modern Day Saints Church,
6,4,Second Presbyterian Church,
我的 COPY 命令在 bash 中如下所示:
psql -d vacation -c "COPY denominations FROM '$PWD/data/Data - Denominations.csv' WITH DELIMITER ',' CSV HEADER;"
psql -d vacation -c "COPY churches FROM '$PWD/data/Data - Churches.csv' WITH DELIMITER ',' CSV HEADER;"
我得到的错误是:
ERROR: invalid input syntax for integer: "Saddleback Church"
CONTEXT: COPY churches, line 2, column denomination_id: "Saddleback Church"
现在,我要重新排列 CSV 中的列,但这不应该可行吗?
【问题讨论】:
标签: postgresql csv