我是sql新手,从实用sql书开始学习。我在第四章,正试图导入美国人口普查。我创建了一个表,其中的列如下所示: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 我得到以下错误:
"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"
我不知道我哪里做错了,希望你能给我指点迷津。抱歉,如果这是一个让人恼火的简单问题,但我还在找我的脚。
1条答案
按热度按时间px9o7tmv1#
因为错误说明值太长,所以我查看了这个短语的含义。错误是引用geo_name,根据您从github引用的链接,它是varchar(90)。这意味着geo_name值必须小于等于90个字符才能“适应”该约束。
似乎csv正试图作为一个长字符串加载。所以它不会把“奥托加县”作为第一个地理名称,尽管这是目标。相反,它在错误的最后一部分显示了这一点:
地理名称:“奥托加县,阿拉巴马州,050,3,6,010011539582278257757355457122135,+32.5363818,-086.6444901545715370…”
它似乎试图加载整个字符串,包括逗号作为geo_名称,因此长度超过90个字符,因此它给出了一个错误。
你想把它装进什么?