我正在开发一个项目,我需要创建一个新表,然后从CSV导入数据。我已经阅读了许多类似的问题(“上一个预期专栏之后的额外数据”)和StackOverflow上的答案,但我还没有找到罪魁祸首。
CREATE TABLE colleges2014_15 (
unitid integer,
intsnm text,
city text,
stabbr text,
zip_clean char,
control integer,
latitude float,
longitude float,
tutionfee_in float,
tuitionfee_out float,
pctpell float,
inc_pct_lo float,
dep_stat_pct_ind float,
dep_debt_mdn float,
ind_debt_mdn float,
pell_debt_mdn float,
ugds_men float,
ubds_women float,
locale integer,
PRIMARY KEY(unitid)
);
使用19个不同的列成功创建表。然后我尝试将数据导入新表。
COPY colleges2014_15(
unitid,
intsnm,
city,
stabbr,
zip_clean,
control,
latitude,
longitude,
tutionfee_in,
tuitionfee_out,
pctpell,
inc_pct_lo,
dep_stat_pct_ind,
dep_debt_mdn,
ind_debt_mdn,
pell_debt_mdn,
ugds_men,
ubds_women,
locale
)
FROM '/Users/compose/Downloads/CollegeScorecard_Raw_Data x/MERGED2014_15_cleaned.csv' CSV HEADER
;
我收到错误消息。我在CSV中完成了以下操作:
unitid
;它失败了。我已尝试仅导入第二列(intsnm
),但失败并出现相同的错误。 尝试复制所有19列时的完整错误消息如下:
执行SQL命令时发生错误:COPY college2014_15(unitid,intsnm,city,stabbr,zip_clean, 控制,纬度,经度,tutionfee_in,tuitionfee_out, pctpell,inc_pct _...
错误:上一个预期列之后的额外数据其中:COPY college2014_15,第2行:“100654,Alabama A& M 大学,师范大学,AL,35762,35762,1,34.783368,-86.568502,9096,16596,0.7356,0.651 ......” 1声明失败。
执行时间:0.03秒
尝试仅复制第一列时的完整错误消息是:
执行SQL命令时发生错误:COPY college2014_15(unitid)FROM “/用户/撰写/下载/ CollegeScorecard_Raw_Data x / MERGED2014_15_cleaned.csv'CSV HEADER
错误:上一个预期列之后的额外数据其中:COPY college2014_15,第2行:“100654,Alabama A& M 大学,师范大学,AL,35762,35762,1,34.783368,-86.568502,9096,16596,0.7356,0.651 ......” 1声明失败。
执行时间:0.01秒
非常感谢任何帮助。
答案 0 :(得分:1)
您的CSV有一个ZIP
列,您的表格和COPY
语句会被忽略。
答案 1 :(得分:1)
我花了一段时间才弄清楚什么是错误的搜索错误,因此将我的问题发布给他人。我的问题是pgAdmin的经验不足 pgAdmin要求在导入数据之前创建带有WITH列的表。我曾希望可以从.csv文件中使用标头,但我使用的大多数其他软件包都是以这种方式工作的。
如果使用PostGIS处理GIS系统,则有一个简单的解决方案。我正在使用QGIS 3.4,并且安装了Postgres和PostGIS。
在QGIS中
选择数据库菜单选项
选择DBManager
在左侧-选择桌子的位置
选择导入图层/文件
在下一个窗口中,选择以下内容
输入-选择文件
表格-输入表格名称
好