我有一个CSV文件file.csv
。
在Postgres中,我创建了一个名为grants
的表:
CREATE TABLE grants
(
)
WITH (
OIDS=FALSE
);
ALTER TABLE grants
OWNER TO postgres;
我想导入file.csv
数据而无需在Postgres中指定列。
但如果我运行COPY grants FROM '/PATH/TO/grants.csv' CSV HEADER;
,我会收到此错误:ERROR: extra data after last expected column
。
如何在不指定列和类型的情况下导入CSV数据?
答案 0 :(得分:1)
错误是正常的。 您创建了一个没有列的表。 COPY命令尝试将数据导入到具有良好结构的表中。 因此,在执行COPY命令之前,必须创建与csv文件对应的表。
我发现了pgfutter:
“将CSV和JSON导入PostgreSQL是一种简单的方法。这个小工具可以解决当你只想将一些数据转储到数据库时通常需要处理的所有麻烦和咒骂”
也许是一个解决方案......
答案 1 :(得分:0)
对我来说最好的方法是将csv转换为dataframe,然后按照
https://github.com/sp-anna-jones/data_science/wiki/Importing-pandas-dataframe-to-postgres
答案 2 :(得分:0)
否,无法使用COPY命令
如果指定了列列表,则COPY只会将数据复制到 文件中指定的列。如果在 不在列列表中的表格,COPY FROM将插入 这些列的默认值。
COPY不会为您创建列。