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=127.0.0.1 --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=127.0.0.1 --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

  2. 命令的使用方法

  • 新建个文件夹,按需要修改文件夹名称;
  • 将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密码、修改执行脚本等重复操作都避免了,减少工作量的同时可以将此类备份操作交由运维人员定期完成。

相关推荐
云和数据.ChenGuang36 分钟前
Django 应用安装脚本 – 如何将应用添加到 INSTALLED_APPS 设置中 原创
数据库·django·sqlite
woshilys1 小时前
sql server 查询对象的修改时间
运维·数据库·sqlserver
Hacker_LaoYi1 小时前
SQL注入的那些面试题总结
数据库·sql
建投数据2 小时前
建投数据与腾讯云数据库TDSQL完成产品兼容性互认证
数据库·腾讯云
Hacker_LaoYi3 小时前
【渗透技术总结】SQL手工注入总结
数据库·sql
岁月变迁呀3 小时前
Redis梳理
数据库·redis·缓存
独行soc3 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍06-基于子查询的SQL注入(Subquery-Based SQL Injection)
数据库·sql·安全·web安全·漏洞挖掘·hw
你的微笑,乱了夏天4 小时前
linux centos 7 安装 mongodb7
数据库·mongodb
工业甲酰苯胺4 小时前
分布式系统架构:服务容错
数据库·架构
独行soc5 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍08-基于时间延迟的SQL注入(Time-Based SQL Injection)
数据库·sql·安全·渗透测试·漏洞挖掘