postgis导入导出shp文件,主要有两种方式:
一、借助PostGIS shapefile工具
具体操作可参考 PostGIS教程四:加载空间数据 https://blog.csdn.net/qq_35732147/article/details/85228444
二、调用Postgis的pgsql2shp.exe程序
1、shp导入postgis
1)cd到PostgreSQL安装的bin目录
cd C:\Program Files\PostgreSQL\12\bin
2)调用pgsql2shp.exe程序执行导出数据操作
shp2pgsql.exe -s 4490 -I "C:/Users/4fyh/Desktop/data/cun.shp" public.cun | psql -h localhost -p 5432 -d postgis_31_sample -U postgres -W
shp2pgsql的参数(具体参数使用shp2pgsql.exe -help进行查看):
-s 指定空间参考系,PostGIS的参考系和EPSG代码是一样的,比如EPSG:4326表示WGS84地理坐标系
-I 指定在新建的关系表的空间对象的那一列建立空间索引
然后,双引号引起来的是Shapefile的文件名称(也可以加上扩展名.shp)
最后是关系表的全名,staging是schema名称,world_continent是关系名称
shp2pgsql的输出是一个标准的SQL,然后管道操作符’|’将结果传入到psql中进行SQL的执行。
-h 指定连接的地址hostname
-p 指定连接的端口号
-d 指定连接的数据库名称
-U 指定连接的用户名
-W 指定在执行时弹出密码输入提示
运行按照提示输入用户密码即可。
2、shp导出postgis
1)cd到PostgreSQL安装的bin目录
cd C:\Program Files\PostgreSQL\12\bin
2)调用pgsql2shp.exe程序执行导出数据操作
pgsql2shp.exe -f C:/Users/4fyh/Desktop/data/output/xian.shp -h localhost -p 5432 -u postgres -P 123456 postgis_31_sample public.xian
参数说明(具体参数使用pgsql2shp.exe -help进行查看):
-f 导出路径和文件名,如不加文件名,默认导出output.shp
-h 主机名
-p 端口号
-u 用户名
-P 密码 注意是大写的P,与端口号小写p区分
最后跟的是 database schema.table 即:数据库 模式.表