【发布时间】:2017-11-07 07:40:56
【问题描述】:
我需要将 100,000 个地址的地理编码结果导入我的数据库。结果以 CSV 文件的形式提供。我的同事使用 mySQL 导入了它。但是,我正在使用 PostgreSQL 并且导入不起作用。我正在尝试用 42 列填充一个空表。第二列包含来自地理编码 API 的原始数据作为文本。随后的列用逗号分隔。请以 CSV 中的显示方式查看一个地址的示例(稍后应在我的数据库中显示为一行)。 说清楚: 第一栏应填写 00012 VILLANOVA DI GUIDONIA, IT, 第二列包含原始数据, 确定的第三列, 第 4 列有 1, 拉齐奥第五纵队, 等等。
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,只能使用 \copy)。
【问题讨论】:
-
我不认为
\copy可以处理多行记录。您将需要一个不同的工具来导入该数据。你知道你的同事用的是什么工具吗? -
我认为您的问题可以通过删除 CVS 文件中的 \r\n 来解决,您需要一行一行。
标签: postgresql csv import multiline