我是SQL的新手,从实用SQL一书开始学习。我在第4章,正在尝试导入美国人口普查CSV。我已经创建了包含如下所示列的表:https://github.com/anthonydb/practical-sql/blob/master/Chapter_04/Chapter_04.sql。
我的问题是,当我试图导入从https://raw.githubusercontent.com/anthonydb/practical-sql/master/Chapter_04/us_counties_2010.csv拉取的CSV时,我得到了以下错误:
"ERROR: value too long for type character varying(90)
CONTEXT: COPY us_counties_2010, line 2, column geo_name: "Autauga County,AL,050,3,6,01,001,1539582278,25775735,54571,22135,+32.5363818,-086.6444901,54571,5370..."
SQL state: 22001"我不确定我错在哪里,希望能得到您的指导。很抱歉,如果这是一个令人讨厌的简单问题,但我仍然在寻找自己的脚。
发布于 2020-07-08 20:28:12
因为错误显示值太长,所以我查看了这个短语所指的值。错误是引用geo_name,根据您从github引用的链接,它是varchar(90)。这意味着geo_name值必须小于或等于90个字符才能“适合”该约束。
看起来CSV正试图将其加载为一个长字符串。所以它不会加载"Autauga County“作为第一个geo_name,尽管这是目标。相反,它会在错误的最后部分显示以下内容:
geo_name:“奥陶加县,AL,050,3,6,01,001,1539582278,25775735,54571,22135,+32.5363818,-086.6444901,54571,5370...”
看起来它试图加载包括逗号在内的整个字符串作为geo_name,所以长度超过90个字符,所以它会给出一个错误。
你想把它加载到什么地方?
https://stackoverflow.com/questions/62793195
复制相似问题