如何Postgres的执行批量插入
问题描述:
我有以下形式的数据在一个名为myfile.txt的文本文件:如何Postgres的执行批量插入
id_1 POLYGON (1.137821,-129.141488|1.137874,-129.141493|1.137970,-129.141403|1.137994,-129.141349|1.138021,-129.141238)
id_2 LINESTRING (7.294799,-122.935414|7.294679,-122.935129)
id_3 POLYGON (1.139228,-129.143349|1.139228,-129.143401|1.139150,-129.143461|1.138930,-129.143451|1.138734,-129.143445|1.138630,-129.143390|1.138007,-129.142777|1.137906,-129.142629|1.137761,-129.142286|1.137796,-129.142214|1.137844,-129.142142|1.137839,-129.142067)
id_4 POINT (1.138007,-129.142777)
这里,POLYGON
,LINESTRING
和POINT
指定的经度和纬度的地方的位置。我想这个批次中插入数据如下表:
create table idLatLongTable
(id character varying(250), geo_column geography);
我的问题是:如何做到这一点的数据batch insert
在我的表idLatLongTable
?
我知道如何做一次一行的插入。但是,我无法理解如何在此表上执行批次插入
答
您的数据几乎与Well Known Text类似,但事实并非如此。这是你自己产生的东西吗?如果是这样,你应该改变你的程序,以WKT格式生成它。例如根据WKT你的观点场应该看起来像
POINT (1.138007 -129.142777)
但它
POINT (1.138007,-129.142777)
同样,对于一个线串的正确表示是
LINESTRING (7.294799 -122.935414, 7.294679 -122.935129)
但在你的数据,你有,
它应该是空间和|
它应该是,
所以首先要做的是转换你的数据t帽子是PostGIS或任何其他空间感知数据库可以接受的。
当你在它的时候,请从id中去掉id_部分。将id_1
保存为varchar毫无意义,应该保存的是1
整数字段