我需要将100,000个地址的地理编码结果导入我的数据库。结果以CSV文件提供。我的同事使用mySQL导入它。但是,我正在使用PostgreSQL并且导入不起作用。我试图用42列填充一个空表。第二列包含来自地理编码API的原始数据作为文本。后续列以逗号分隔。请参阅CSV中显示的一个地址(稍后应该在我的数据库中显示为一行)的示例。 说清楚: 第1栏应填写00012 VILLANOVA DI GUIDONIA,IT, 第二列包含原始数据, 好的第3栏, 第4列,1, 拉齐奥第5纵队, 等。
00012 VILLANOVA DI GUIDONIA, IT,"{\
\"results\" : [\
{\
\"address_components\" : [\
{\
\"long_name\" : \"Villanova\",\
\"short_name\" : \"Villanova\",\
\"types\" : [ \"locality\", \"political\" ]\
},\
{\
\"long_name\" : \"Guidonia\",\
\"short_name\" : \"Guidonia\",\
\"types\" : [ \"administrative_area_level_3\", \"political\" ]\
},\
{\
\"long_name\" : \"Città Metropolitana di Roma\",\
\"short_name\" : \"RM\",\
\"types\" : [ \"administrative_area_level_2\", \"political\" ]\
},\
{\
\"long_name\" : \"Lazio\",\
\"short_name\" : \"Lazio\",\
\"types\" : [ \"administrative_area_level_1\", \"political\" ]\
},\
{\
\"long_name\" : \"Italy\",\
\"short_name\" : \"IT\",\
\"types\" : [ \"country\", \"political\" ]\
},\
{\
\"long_name\" : \"00012\",\
\"short_name\" : \"00012\",\
\"types\" : [ \"postal_code\" ]\
}\
],\
\"formatted_address\" : \"00012 Villanova RM, Italy\",\
\"geometry\" : {\
\"bounds\" : {\
\"northeast\" : {\
\"lat\" : 41.9732526,\
\"lng\" : 12.7654465\
},\
\"southwest\" : {\
\"lat\" : 41.9560237,\
\"lng\" : 12.745568\
}\
},\
\"location\" : {\
\"lat\" : 41.96298669999999,\
\"lng\" : 12.7566109\
},\
\"location_type\" : \"APPROXIMATE\",\
\"viewport\" : {\
\"northeast\" : {\
\"lat\" : 41.9732526,\
\"lng\" : 12.7654465\
},\
\"southwest\" : {\
\"lat\" : 41.9560237,\
\"lng\" : 12.745568\
}\
}\
},\
\"place_id\" : \"ChIJQbO9a615LxMRMpoTF6_GZ2I\",\
\"types\" : [ \"locality\", \"political\" ]\
}\
],\
\"status\" : \"OK\"\
}\
,OK",1,"Lazio","Città Metropolitana di Roma","Guidonia",\N,\N,\N,"Italy"\N,\N,"Villanova",\N,\N,\N,\N,\N,"00012",\N,\N,\N,\N,\N,\N,\N,\N,\N,\N,\N,\N,\N,\N,\N,41.962986,12.756611,"locality","locality, political",3148330,"00012 Villanova RM, Italy","2017-10-30 17:28:40"
我正在使用提示 PostgreSQL csv import from a MySQL csv export?
并尝试了
\COPY addresses_googleresponse from 'myfile.csv' with delimiter AS ',' NULL AS '\\N' ESCAPE E'\\' CSV
- >错误:未终止的csv引用字段
使用
中的提示unterminated CSV quoted field in Postgres, 我试过了
\COPY addresses_googleresponse from 'myfile.csv' with delimiter AS ',' NULL AS '\\N' ESCAPE E'\\' quote E'\b' CSV
- >错误:列“numresults”
的数据丢失我发现这种格式的第二列存在潜在问题,但这就是它的样子。 任何想法如何用\ copy(并希望没有预处理)导入它是非常受欢迎的(我不能使用副本,只能\ copy)。
答案 0 :(得分:0)
您的CSV文件不正确。
文件以
开头00012 VILLANOVA DI GUIDONIA, IT,"{\
并且您希望第一个字段为00012 VILLANOVA DI GUIDONIA, IT
,对吗?
但是没有办法告诉第一个逗号是字段的一部分,而第二个逗号分隔字段。
你必须用引号括住地址。
同样,您希望成为第三个字段的,OK",
实际上是多行数据字段的结尾,因为它位于用于分隔该字段的引号内。
只要您获得正确的报价,拥有多行数据就没有问题。
答案 1 :(得分:0)
我们解决了这个问题。对于那些受到关注的人,以下代码有效:
\COPY addresses_googleresponse from 'mytable.csv' with csv delimiter ',' null '\N' escape '\'