pgsql-使用dump命令制作数据库结构、数据快速备份bat脚本

一、背景

通过pgsql的dump命令可以快速的做数据库表结构、表数据的备份,随着业务不断的增加单库单实例已经不能满足业务需要。技术人员是比较懒惰的,每次敲相同命令或是无脑的复制黏贴操作感觉都是对精神的一种摧残,解决摧残的方法就是把命令写成批处理文件,每次双击下搞定!!!

二、环境

  • windows 10
  • pgsql 14

三、快速备份脚本

  1. 新建个bak-pg_dump.bat文件,将一下内容保存到bat文件中
goto start
::功能:基于pgsql的dump命令,实现数据库表结构和数据库表数据的导出
::使用:1.修改pgslq安装目录dump变量;2.修改目标库密码PGPASSWORD变量;3.修改目标库实例database变量;4.按需增减schema变量和对应的pg_dump指令;
::修改日期:2024-07-16
:start
@echo off
echo dir=%cd%
set dump=D:\Program Files\PostgreSQL\14\bin
set PGPASSWORD=********
::database
set database=mydatabase
::管理库
set schema_admin_top=myschema
::结构转存
"%dump%\pg_dump" --host=10.79.32.232 --port=5432 --username=postgres --schema=%schema_admin_top% --schema-only --no-owner --verbose --encoding=UTF8 %database% > %cd%\struct-%schema_admin_top%.sql
::数据转存
"%dump%\pg_dump" --host=10.79.32.232 --port=5432 --username=postgres --schema=%schema_admin_top% --data-only --column-inserts --no-owner --verbose --encoding=UTF8 %database% > %cd%\data-%schema_admin_top%.sql
pause
  1. 命令的使用方法
  • 新建个文件夹,按需要修改文件夹名称;
  • 将bak-pg_dump.bat文件复制到文件件内;
  • 双击bak-pg_dump.bat执行批处理;
  • 等待命令执行完毕,目录下将生成struct-.sql和data-.sql文件
  • struct开头的为库表结构备份脚本;
  • data开头的为库表数据备份脚本;

四、遇到的问题和解决方案

  1. 提示“LOCK TABLE test.xxxx IN ACCESS SHARE MODE”错误
常见错误和解决:
pg_dump: 最后的内置 OID 是 16383
pg_dump: 读扩展
pg_dump: 识别扩展成员
pg_dump: 读取模式
pg_dump: 读取用户定义表
pg_dump: 错误: 查询失败: 閿欒:  瀵硅〃 xxxx 鏉冮檺涓嶅
pg_dump: 错误: 查询是: LOCK TABLE test.xxxx IN ACCESS SHARE MODE

这个问题是在postgresql中使用pg_dump备份执行备份表结构时遇到的问题,产生这个问题的原因是pg_dump需要使用超级用户。
更改 --username参数,使用超级用户或postgres用户解决问题。

总结

通过bat将每次需要重复执行的cd命令、输入pgsql密码、修改执行脚本等重复操作都避免了,减少工作量的同时可以将此类备份操作交由运维人员定期完成。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
备份pgsql数据库的表结构和表数据,可以使用pg_dump命令。具体步骤如下: 1. 打开命令提示符界面,切换到数据库安装的bin目录下。 2. 输入以下命令备份整个数据库,包括结构数据: ``` pg_dump -h localhost -p 5432 -U postgres -d 数据库名 > 备份文件路径 ``` 其中,localhost是数据库主机名,5432是数据库端口号,postgres是数据库用户名,数据库名是要备份数据库的名称,备份文件路径是备份文件的保存路径和文件名。[1] 例如,要备份名为data的数据库,并将备份文件保存在D盘的data.bak文件中,可以使用以下命令: ``` pg_dump -h localhost -p 5432 -U postgres -d data > D:\data.bak ``` 如果只想备份指定的表(包括数据),可以使用以下命令: ``` pg_dump -h 主机名 -p 端口号 -d 数据库名 -t 表名1 -t 表名2 -U 用户名 > 备份文件路径 ``` 其中,主机名是数据库主机名,端口号是数据库端口号,数据库名是要备份数据库的名称,表名1和表名2是要备份的表的名称,用户名是数据库用户名,备份文件路径是备份文件的保存路径和文件名。[3] 例如,要备份名为data的数据库中的表table1和table2,并将备份文件保存在/data/文件夹下的filename.sql文件中,可以使用以下命令: ``` pg_dump -h localhost -p 5432 -d data -t table1 -t table2 -U postgres > /data/filename.sql ``` 如果需要了解更多关于pgsql数据的函数和SQL操作,可以参考该链接:https://www.runoob.com/postgresql/postgresql-tutorial.html。[2]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值