程序员求职经验分享与学习资料整理平台

网站首页 > 文章精选 正文

写一个脚本使用pgdump备份指定表指定条件的数据

balukai 2025-02-06 13:59:57 文章精选 7 ℃

前提条件:

- 确保已经安装了PostgreSQL数据库及其客户端工具,并且 pg_dump 命令在系统路径中。

- 具备对目标数据库的连接权限和表的读取权限。

脚本内容:

bash


#!/bin/bash

# 数据库连接信息

DB_USER="your_username"

DB_PASSWORD="your_password"

DB_HOST="your_host"

DB_PORT="your_port"

DB_NAME="your_database"

# 要备份的表名

TABLE_NAME="your_table"

# 备份条件

WHERE_CONDITION="column_name = 'value'"

# 备份文件路径

BACKUP_FILE="/path/to/backup.sql"

# 设置环境变量以提供密码

export PGPASSWORD=$DB_PASSWORD

# 执行pg_dump命令备份指定表指定条件的数据

pg_dump -U $DB_USER -h $DB_HOST -p $DB_PORT -t $TABLE_NAME -a -Fp --inserts -c -w -v --data-only --column-inserts --exclude-table-data='*' --table-data-only -f $BACKUP_FILE $DB_NAME --where="$WHERE_CONDITION"

# 取消环境变量以避免密码泄露风险

unset PGPASSWORD

脚本说明:

- 数据库连接信息部分:

- DB_USER :数据库用户名。

- DB_PASSWORD :数据库用户密码。注意,在实际使用中,应避免在脚本中明文存储密码,可考虑使用更安全的方式,如环境变量或密钥管理系统。

- DB_HOST :数据库主机地址。

- DB_PORT :数据库端口号。

- DB_NAME :要备份的数据库名称。

- 表和备份条件部分:

- TABLE_NAME :指定要备份的表名。

- WHERE_CONDITION :指定备份数据的条件,例如 column_name = 'value' ,这里可以根据实际需求修改为具体的SQL条件。

- 备份文件路径部分:

- BACKUP_FILE :指定备份文件的保存路径及文件名。

- pg_dump 命令部分:

- -U $DB_USER :指定数据库用户名。

- -h $DB_HOST :指定数据库主机地址。

- -p $DB_PORT :指定数据库端口号。

- -t $TABLE_NAME :指定要备份的表。

- -a :只备份数据,不备份模式(表结构等)。

- -Fp :使用纯文本格式备份。

- --inserts :使用 INSERT 语句备份数据,这样恢复时不需要依赖表结构已存在。

- -c :在恢复时添加 DELETE 语句以清空表数据,确保恢复的数据是完整的备份数据。

- -w :不提示输入密码(因为通过 PGPASSWORD 环境变量提供了密码)。

- -v :显示详细信息。

- --data - only :只备份数据。

- --column - inserts :使用带列名的 INSERT 语句,即 INSERT INTO table_name (column1, column2) VALUES (value1, value2) 形式。

- --exclude - table - data='*' :排除所有表的数据(除了指定的表)。

- --table - data - only :只备份表的数据。

- -f $BACKUP_FILE :指定备份文件的输出路径。

- --where="$WHERE_CONDITION" :指定备份数据的条件。

- 环境变量部分:

- export PGPASSWORD=$DB_PASSWORD :设置环境变量 PGPASSWORD 以提供数据库密码,这样 pg_dump 命令在连接数据库时不需要手动输入密码。

- unset PGPASSWORD :备份完成后取消环境变量,以避免密码泄露风险。


将上述脚本保存为一个文件(例如 backup_table.sh ),给予可执行权限( chmod +x backup_table.sh ),然后根据实际的数据库和表信息修改脚本中的相应部分,即可运行备份。

最近发表
标签列表