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函数了解起作用。