postgres数据库的数据备份与恢复
一 . 使用 pgAdmin4
1 . 备份
2 . 还原
注意 : 在还原数据库的时候,要先把备份的那个数据库在pgAdmin4上删除
二 . 命令行
1.备份
pg_dump是一个非常有用的备份工具,它甚至可以在数据库正在使用的事实进行完整的备份。pg_dump执行时会将数据库备份成一个文本文件,这个文件包含了整个数据库全部表的创建和数据的写入操作的SQL语句,使用这些语句就可以重建数据库了。
注意 : 使用命令去备份数据的时候,要进入 postgres/bin 目录下面
语法 : 输入语句之后,会出现 口令 : (输入密码)pg_dump [options...] [dbname] #使用postgres用户登录并备份db1数据库到/bak/db1_bak文件 pg_dump -U postgres -f /bak/db1_bak db1 #使用pg_dump备份数据库中指定的表 pg_dump -U postgres -t tb1 -t tb2 -f /bak/db1_bak db1
使用pg_dumpall备份整个服务器的数据库 #使用pg_dumpall备份整个服务器的数据库 pg_dumpall -U postgres -f /bak/db_bak
pg_dump -U postgres -h 127.0.0.1 -p 5432 table> /c/test # -U : 数据库用户名 # -h : 数据库所在机器的用户名,也可以是回环地址 # -p : 端口号 # table: 要备份的数据库名 # > 后面的就是备份到的地址
免密码输入 : 需要修改配置文件(在windows上),可能会不太安全. 打开 postgres/data/pg_hba.conf 文件 . (在命令行,上面的命令都不要密码,但是当我用Python去执行的时候只有上面这个可以.不知道原因)
2 . 还原
pg_restore可以还原由pg_dump备份的文件,它会重新生成包括数据在内的所有用户定义的类型、函数、表、索引的所有别要的命令
pg_restore -d db1 -U postgres -C /bak/db1_bak #使用-d选项执行数据库的名称,-C指定备份文件的路径
psql是一个PostgreSQL的终端,它可以运行用户输入的语句。另外输入的语句还可以来自一个文件。所以,对于备份的包含create、insert语句的文本文件,可以使用psql恢复到数据中。
psql -d db1 -U postgres -f /bak/db1_bak
三 . 代码备份
本人使用的是Python
import os # 要保存的目录 和 备份的文件名 databasename2.sql backup_path = r'G:\code\rext\back\databasename2.sql' # 进入postgres/bin 目录下 os.chdir('E:/postgres/bin') # 备份的命令 a = "pg_dump -U postgres -h 127.0.0.1 -p 5432 grid9 > {} ".format(backup_path) # 利用 os 模块在终端执行命令a os.system(a)