You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何导出含Shapefile的PostgreSQL数据库供他人导入并连接QGIS?

嘿,这个需求我太熟悉了!之前帮团队里的小伙伴导出过带空间数据的PostgreSQL库,刚好能给你一套完整的操作方案,分图形界面和命令行两种方式,你按需选就行:

方法一:用pgAdmin III图形界面导出(适合偏好可视化操作的同学)
  • 打开pgAdmin III,找到你要导出的目标数据库,右键点击它,选择「Backup...」(备份)选项
  • 在弹出的备份窗口里,先选好输出文件的路径和文件名,建议后缀用.backup——这是PostgreSQL专用的备份格式,能完整保留空间数据(也就是你导入的Shapefile对应的PostGIS图层),兼容性拉满
  • 关键选项设置别漏:
    • 「Format」(格式)选「Custom, tar」,这个格式支持压缩,还能完美保留空间数据的结构
    • 「Dump Options」(转储选项)里,一定要勾选「Include CREATE DATABASE statement」(包含创建数据库语句),这样对方导入时不用手动建库;另外如果你的Shapefile默认存在public schema里,确认「Schema」选项选中了public,怕漏的话直接选「All schemas」也没问题
    • 想压缩备份文件的话,在「Compression」里选个中间级别(比如5),平衡压缩率和导出速度
  • 最后点击「Backup」开始导出,等进度条走完就搞定了
方法二:用pg_dump命令行导出(适合喜欢高效操作的同学)

命令行操作更灵活,适合批量或远程操作,执行下面的命令就行:

pg_dump -U your_username -F c -b -v -f /path/to/your/backup_file.backup your_database_name

给你解释下关键参数:

  • -U your_username:替换成你的PostgreSQL用户名
  • -F c:指定备份格式为custom(和pgAdmin里的tar格式一致,支持压缩和空间数据)
  • -b:强制包含大对象,确保Shapefile对应的空间数据完整导出
  • -v:显示详细导出过程,方便排查问题
  • -f /path/to/your/backup_file.backup:替换成你要保存备份文件的路径和文件名
  • your_database_name:替换成目标数据库的名称
给对方的导入步骤(一定要同步给对方哦)

不管用哪种方式导出,对方都需要按下面的步骤导入,还要注意前置条件:

前置要求

对方的本地PostgreSQL必须安装PostGIS扩展——因为你的数据库里有Shapefile转来的空间数据,没有PostGIS会直接报错。如果对方没装,让他们先安装PostGIS,然后在新建数据库里执行CREATE EXTENSION postgis;

用pgAdmin III导入

  • 打开pgAdmin III,右键点击「Databases」,选择「Restore...」(恢复)
  • 选择你发给对方的.backup文件,「Format」选「Custom or tar」
  • 「Restore Options」里,确认「Create database before restoring」(恢复前创建数据库)是勾选状态,这样会自动创建和原数据库同名的库
  • 点击「Restore」开始导入,完成后就能看到所有数据和空间图层了

用pg_restore命令行导入

如果对方喜欢命令行,先创建数据库(如果还没建的话):

createdb -U their_username -T template_postgis their_database_name

然后执行导入命令:

pg_restore -U their_username -d their_database_name -v /path/to/backup_file.backup
连接QGIS的收尾步骤

对方导入完成后,连接QGIS的操作和你之前完全一致:

  • 打开QGIS,添加「PostgreSQL」数据源
  • 填写本地服务器信息(主机一般是localhost,端口默认5432,输入用户名、密码后选择刚导入的数据库)
  • 连接成功后就能看到所有空间图层,直接添加到地图里就能用啦

内容的提问来源于stack exchange,提问作者Fezofchekov

火山引擎 最新活动