【发布时间】:2017-08-15 13:43:30
【问题描述】:
我正在做一个项目,我需要创建一个新表,然后从 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 大学 2014_15(unitid,intsnm,城市,stabbr,zip_clean, 控制,纬度,经度,tutionfee_in,tutionfee_out, pctpell,inc_pct_...
错误:最后一个预期列之后的额外数据位置:复制 学院 2014_15,第 2 行:“100654,Alabama A & M 大学,正常,AL,35762,35762,1,34.783368,-86.568502,9096,16596,0.7356,0.651..." 1 条语句失败。
执行时间:0.03s
尝试仅复制第一列时的完整错误消息是:
执行 SQL 命令时出错:COPY 大学 2014_15(unitid) 来自 '/用户/撰写/下载/CollegeScorecard_Raw_Data x/MERGED2014_15_cleaned.csv' CSV 标题
错误:最后一个预期列之后的额外数据位置:复制 学院 2014_15,第 2 行:“100654,Alabama A & M 大学,正常,AL,35762,35762,1,34.783368,-86.568502,9096,16596,0.7356,0.651..." 1 条语句失败。
执行时间:0.01s
非常感谢任何帮助。
【问题讨论】:
-
你能告诉我们源 CSV 文件的前 2-3 行吗?
-
UNITID,INSTNM,CITY,STABBR,ZIP,ZIP_CLEAN,CONTROL,LATITUDE,LONGITUDE,TUITIONFEE_IN,TUITIONFEE_OUT,PCTPELL,INC_PCT_LO,DEP_STAT_PCT_IND,DEP_DEBT_MDN,IND_DEBT_MDN,PELL_DEBT_MDN,UGDS_MEN,UGDS_WOMEN,LO农工大学,Normal,AL,35762,35762,1,34.783368,-86.568502,9096,16596,0.7356,0.651521138,0.129593046,15000,18951,17000,0.4831,0.5169,12
标签: postgresql csv