ely*_*aie 16 postgresql postgis
我试图使用COPY FROM STDIN将数据导入到我的表中.我表中的一列是几何类型.我的命令看起来像这样......
COPY "WeatherStations" ("Station_ID", "Station_Code", "Station_Name", "Station_Location") FROM stdin;
1 KAVP WILKES-BARRE ST_GeomFromText('POINT(41.338055 -75.724166)')
2 KOKV WINCHESTER ST_GeomFromText('POINT(39.143333 -78.144444)')
3 KSHD SHENANDOAH ST_GeomFromText('POINT(38.263611 -78.896388)')
...
Run Code Online (Sandbox Code Playgroud)
不过,我认为它正试图插入文本"ST_GeomFromText('POINT ...",而是未能计算表达式和插入表达式的结果的.有谁知道什么可能怎么回事,我怎么能得到插入实际的geoms?
Ful*_*vio 30
我很难弄清楚如何使用COPY FROM STDIN命令将几何数据批量复制/加载到PostGIS中,我找不到关于此主题的官方文档.
在批量加载期间更改列(ALTER TABLE/SET DATA TYPE/USING)对我来说不是一个选项,因为它仅在PostGIS 2.0+中支持 Geometry类型,也不能使用临时表.
确实有一种直接的方法(至少在PostGIS 1.5.2+中).您只需使用Geometry数据的简单WKT(已知文本)表示,就可以通过这种方式重写复制语句的数据:
1 KAVP WILKES-BARRE POINT(41.338055 -75.724166)
2 KOKV WINCHESTER POINT(39.143333 -78.144444)
3 KSHD SHENANDOAH POINT(38.263611 -78.896388)
Run Code Online (Sandbox Code Playgroud)
如果您在几何列上强制执行SRID约束,则必须使用以下语法(在此示例中SRID为4326),称为EWKT(扩展的已知文本,这是PostGIS特定格式):
1 KAVP WILKES-BARRE SRID=4326;POINT(41.338055 -75.724166)
2 KOKV WINCHESTER SRID=4326;POINT(39.143333 -78.144444)
3 KSHD SHENANDOAH SRID=4326;POINT(38.263611 -78.896388)
Run Code Online (Sandbox Code Playgroud)
结束注释:"POINT"和左括号"("之间必须没有空格,否则COPY仍会返回错误,表示您的几何数据格式无效.
| 归档时间: |
|
| 查看次数: |
13163 次 |
| 最近记录: |