PostGIS:使用shp2pgsql、pgsql2shp、OGR2OGR函数进行数据导入、导出

数据导入与导出函数

数据库数据导入与导出可以通过多个函数完成,QGIS文档介绍了3个函数: shp2pgsql、pgsql2shp、OGR2OGR,分别用于shp导入数据库、数据库文件导出为shp、数据转换为多种数据格式。

(1)shp2pgsql

在linux语法如下所示,其中:-s <SRID>指定空间参考系统标识符(SRID),-c表示将根据 Shapefile 的结构在数据库中创建一个新表,-D是一种更紧凑的 SQL 表示方式来存储数据,-I是在创建的新表上创建空间索引,<schema>.<table>指定了将 Shapefile 数据存储在 PostgreSQL 数据库中的模式和表名;然后将shp2pgsql的输出作为 psql 的输入,在psql中制定了数据库名称、主机名或者IP、用户名信息。

sql 复制代码
shp2pgsql -s <SRID> -c -D -I <path of shapefile> <schema>.<table> | \
psql -d <databasename> -h <hostname> -U <username> 

在window系统下需要分两步执行,代码参考如下:

sql 复制代码
shp2pgsql -s <SRID> -c -D -I <path to shapefile> <schema>.<table> > import.sql
psql psql -d <databasename> -h <hostname> -U <username> -f import.sql 
(2)pgsql2shp

pgsql2shp语法参考如下,

sql 复制代码
pgsql2shp -f <新的shp文件路径> -g <几何列名称> \
-h <主机名> -U <用户名> <数据库名称> <表名 | 视图名> 

此外,可以使用查询语句,这里的 "<查询>"指定要执行的 SQL 查询,查询结果将被导出为 Shapefile。

sql 复制代码
pgsql2shp -f <新的 Shapefile 路径> -g <几何列名称> \
-h <主机名> -U <用户名> "<查询>"
(3)OGR2OGR

ogr2ogr 是 GDAL 库的一部分,支持多种数据格式,包括但不限于 Shapefile、GML、GeoJSON、SQLite 等。在使用GDAL之前,可以使用gdalinfo --version查看是否安装了GDAL。官网具有详细的教程:https://gdal.org/en/stable/programs/ogr2ogr.html。

这个函数在之前也学习分享过,链接为:GDAL:矢量数据提取-转换-加载(ETL)过程 https://mp.weixin.qq.com/s/9mqrb2Ze0wHKpMA-LixcZA?token=1828476271\&lang=zh_CN。在这个分享中,介绍了使用`ogr2ogr` 结合WHERE语句提取子集、使用CAST() 更改列的数据类型、重命名、SCV转SHP。

此外,QGIS文档中介绍了将表从 PostGIS 导出到 GML,它在这里指定了-f 参数,这个参数用来指定输出的格式。但我们可以省略这个参数,因此GDAL会根据拓展名来推断出要导出的格式。

sql 复制代码
ogr2ogr -f GML export.gml PG:'dbname=<databasename> user=<username>
        host=<hostname>' <Name of PostGIS-Table>
#转shp
ogr2ogr 输出Shapefile.shp PG:"dbname='<databasename>' user='<username>' host='<hostname>'" <表名或视图名> 
相关推荐
这个DBA有点耶3 小时前
研发规模/投入最大的国产数据库厂商是谁?拆解五个衡量维度
数据库·程序员·产品
葡萄城技术团队3 小时前
数据库里的数据明明是对的,为什么 BI 报表还是错?
数据库
野生数据人3 小时前
日志平台每日巡检我压成了一条命令链:从 SHOW BACKENDS 到扩缩容的完整步骤
大数据·数据库
bmxy小明同学4 小时前
2026-10-09-token与成本
java·前端·数据库
路远的数据库笔记4 小时前
Oracle报ORA-00020连接打满?从专用进程模型到静态参数,一次生产排查全记录
数据库·oracle·国产数据库·ora-00020·dba实战·sharedserver
瀚高PG实验室4 小时前
瀚高数据库序列介绍、使用及值不连续、重复写入等现象处理
数据库·postgresql·瀚高数据库
这个DBA有点耶4 小时前
PostgreSQL HOT更新:频繁更新表的索引膨胀根因与fillfactor调优
数据库·sql·postgresql
野生数据人4 小时前
日志平台运维速查表:巡检命令、阈值、参数,一张贴墙
大数据·数据库
数据库小学妹4 小时前
向量检索最小可运行实现:HNSW索引参数与召回率/延迟权衡
数据库·后端
发量惊人的中年网工4 小时前
SD-WAN 组网方案怎么选?跨地域与多分支企业的选型指南(含成本对比)
服务器·网络·数据库