PostgreSql dump导入问题集合

PostgreSql dump导入问题集合

删除数据库无法删除问题

SELECT pg_terminate_backend(pg_stat_activity.pid) 

FROM pg_stat_activity 
WHERE datname='test' 
AND pid<>pg_backend_pid();

版本检查

pg_restore -l D:/suian/vrms2_backup.dump > D:/suian/vrms22list.txt

打开 list.txt,搜索目标表(如 test.user)的条目:

...
5; 3079 16505 TABLE public users postgres
6; 3079 16510 TABLE test user postgres   # 目标条目
7; 3079 16515 INDEX test user_pkey postgres
...

dump 导出

  • 推荐使用 pg_dump -Fc:生成高效压缩的 .dump 文件,支持选择性恢复。
pg_dump -Fc -U postgres -h localhost -p 5432 -d test -f /backups/test_backup.dump

dump导入

sql导入

psql -h <远程主机> -p <端口> -U <用户名> -d <目标数据库名> -f <dump文件路径>
psql -h 192.168.1.100 -p 5432 -U postgres -d mydb -f /path/to/backup.sql

dump导入

pg_restore -h <远程主机> -p <端口> -U <用户名> -d <目标数据库名> <dump文件路径>
pg_restore -h 192.168.1.100 -p 5432 -U postgres -d mydb /path/to/backup.dump
pg_restore -h 127.0.0.1 -p 5434 -U postgres -d vrms2 --no-owner --no-acl D:/suian/vrms2_backup.dump

创建数据库

数据库不存在
psql -h <主机> -U postgres -c "CREATE DATABASE mydb;"

约束文件

;
; Archive created at 2025-04-16 20:56:48
;     dbname: test
;     TOC Entries: 14
;     Compression: -1
;     Dump Version: 1.13-0
;     Format: CUSTOM
;     Integer: 4 bytes
;     Offset: 8 bytes
;     Dumped from database version: 10.21
;     Dumped by pg_dump version: 10.21
;
;
; Selected TOC Entries:
;
2804; 1262 16393 DATABASE - test postgres
3; 2615 2200 SCHEMA - public postgres
2805; 0 0 COMMENT - SCHEMA public postgres
1; 3079 12924 EXTENSION - plpgsql 
2806; 0 0 COMMENT - EXTENSION plpgsql 
197; 1259 16399 TABLE public book postgres
196; 1259 16394 TABLE public user postgres
2798; 0 16399 TABLE DATA public book postgres
2797; 0 16394 TABLE DATA public user postgres
2675; 2606 16403 CONSTRAINT public book book_pkey postgres
2673; 2606 16398 CONSTRAINT public user user_pkey postgres

对于custom(pg_backup_custom.c)格式,文件头中有两个和版本相关的内容,一个是服务器的版本、一个是程序的版本,这两个版本标识的作用如下:

1 服务器的版本:表示本导出导入工具、所连接的数据库服务器的版本。如果服务器的版本低于7.1,则不支持。可以阅读代码中的_check_database_version函数。服务器的版本可以决定导出程序在读出数据(从系统表读出数据)的内容和格式。可以借鉴:getOperators、getTables等get系列的函数
2 程序的版本:标识本导出文件,是被pg_dump的哪个版本的程序导出的。

除了以上2种版本号外,PoatgresSQL的导出导入工具还支持:
3 在ArchiveHandle结构中,有“version”的属性, 标识数据格式的版本。这样,不同版本导出的文件,也许可以有不同的格式,在pg_restore做恢复的时候,可以根据程序版本识别数据格式,进而支持对于数据文件的兼容。可以读ReadHead函数了解起作用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汪随安

朝看天色暮看云行也思君坐也思君

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值