我正在使用Postgres + Postgis处理空间数据,我正在使用带有CSV文件(id,时间戳,纬度,经度)的数据集,我正在将CSV文件中的数据复制到数据库中,如下所示:
cat mycsv.csv | psql -d mydatabase -c "COPY mytable (id ,datetime ,lat ,lon) from stdin WITH DELIMITER ','"
现在我正在使用不同的CSV文件数据集,我无法将其复制到数据库。 新的CSV文件有一条折线,格式如下:
val1,val2,val3,"[[-8.618643, 41.141412], [-8.618499, 41.141376], [-8.620326, 41.14251]]"
我想将折线导入几何数组或文本字段(WKT),我的最终目标是导入折线并将其作为几何类型线存储在表格中。
问题是,因为分隔符是','折线是一个坐标分隔我的','我得到了明显的错误:
ERROR: extra data after last expected column
有没有办法让这个问题有超过1个分隔符或不同的aprouch?
答案 0 :(得分:3)
我假设你已经可以将csv导入postgres,你的表将有一个字符串字段geom_text
问题是你字符串的格式。 geom_text
如果您在MULTILINESTRING
查看 MULTILINESTRING ((10 10, 20 20, 10 40),
(40 40, 30 30, 40 20, 30 10))
[]
所以你必须使用字符串替换来()
MULTILINESTRING
然后附加关键字 SELECT ST_GeomFromText(updated_geom_text) FROM YourCsvTable;
然后使用 https://en.wikipedia.org/wiki/Well-known_text 功能创建对象geom。
Disposing
答案 1 :(得分:1)
cat mycsv.csv | psql -d mydatabase -c "COPY mytable (id ,datetime ,lat ,lon) from stdin WITH DELIMITER ',' CSV"
您需要指定CSV模式,目前您只是告诉它使用分隔符。
答案 2 :(得分:0)
我使用sed,awk和regex修改数据集来解决这个问题。
然后使用ST_GeomFromText函数从文本中获取行。