错误:postgres表

时间:2017-03-23 06:24:14

标签: postgresql csv

我正在开发一个项目,我需要创建一个新表,然后从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中完成了以下操作:

  • 确保将其保存为UTF-8 CSV(在Mac上运行)
  • 已清除每行中的所有逗号
  • 清除所有NULL值
  • 确认所有数据类型(整数,浮点数,文本等)都正确
  • 我试图只复制第一列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秒

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

您的CSV有一个ZIP列,您的表格和COPY语句会被忽略。

答案 1 :(得分:1)

我花了一段时间才弄清楚什么是错误的搜索错误,因此将我的问题发布给他人。我的问题是pgAdmin的经验不足 pgAdmin要求在导入数据之前创建带有WITH列的表。我曾希望可以从.csv文件中使用标头,但我使用的大多数其他软件包都是以这种方式工作的。

如果使用PostGIS处理GIS系统,则有一个简单的解决方案。我正在使用QGIS 3.4,并且安装了Postgres和PostGIS。

在QGIS中
选择数据库菜单选项
选择DBManager
在左侧-选择桌子的位置 选择导入图层/文件 在下一个窗口中,选择以下内容
输入-选择文件
表格-输入表格名称