You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pg_dump执行成功但备份文件无INSERT语句及数据问题求助

问题原因及解决办法

核心原因

你备份的wd555.ft_bjgzflcbmxb是分区主表,从备份文件里的PARTITION BY LIST (yyyymm)可以明确这一点。PostgreSQL的分区主表仅作为逻辑框架存在,本身不存储任何实际数据,所有数据都分散在对应的子分区表中。直接用--table指定主表备份,只会导出表结构,不会包含子分区里的数据。

验证步骤

先确认主表本身无数据,执行以下SQL:

SELECT * FROM wd555.ft_bjgzflcbmxb LIMIT 10;

如果能查到数据,是因为PostgreSQL支持直接查询主表聚合所有子分区数据,但这并不代表主表本身存储了数据。

解决方法

方法1:使用--include-partition参数(PostgreSQL 12+)

该参数会让pg_dump自动包含目标分区主表的所有子分区及其数据,修改后的命令:

pg_dump -d xx_sjcbhs --table=wd555.ft_bjgzflcbmxb --include-partition --column-inserts > e:\temp\ontable2.sql

方法2:直接指定子分区表备份

先查询所有子分区名称:

SELECT inhrelid::regclass FROM pg_inherits WHERE inhparent = 'wd555.ft_bjgzflcbmxb'::regclass;

得到子分区名称后,逐个用--table参数指定,示例:

pg_dump -d xx_sjcbhs --table=wd555.ft_bjgzflcbmxb_202401 --table=wd555.ft_bjgzflcbmxb_202402 --column-inserts > e:\temp\ontable2.sql

方法3:备份整个Schema

如果需要备份该Schema下的所有对象(包括分区表和子分区),直接指定Schema名称:

pg_dump -d xx_sjcbhs -n wd555 --column-inserts > e:\temp\schema_backup.sql

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 02:45:35