现在正打算将一批约10G的包含经纬度的数据导入数据库,由于数据量过大,传统的insert耗时过长,打算采用copy的方法将数据导入。但是对于geography类型的数据必须处理成形如0101000020E6100000D97A8670CC5E5E40967B8159A13C3F40 的数据才能导入,而原数据则是经度和纬度信息。
所以上来寻求帮助,不知道有没有办法在导入的时候让数据库使用st_geomfromtext之类的方法,识别出geography,或者说有什么别的解决方式
还请各位路过的高手们解惑~
不知道解决了没,好久没到postgis版块来看了,说说我的方案吧!
WKT AND EWKT
其实很简单,利用
WKT(well-know text)
就可以了, 如果数据库里面有一个location
字段是geography
类型,那么下面两条sql都可以,效果一样。所以咯,知道该怎么做了哈!!!Postgis支持
EWKT(Extended Well-Known Text)
文件数据变换
原文件的结构(csv)
变换成如下样式
其实就是
SRID=4326;POINT(lng lat)
,然后就可以愉快的使用COPY
命令吧!友情提醒:你的数据文件很大,可别千万一次性读到内存里面(当然如果你内存有那么大你就忽略这条好了),有一种东西叫
Transform Stream(变换流)
,可以处理这种超大的文件。