首页  >  文章  >  数据库  >  如何在MySQL中自动转储数据库表而不指定表名?

如何在MySQL中自动转储数据库表而不指定表名?

Linda Hamilton
Linda Hamilton原创
2024-10-26 19:33:29691浏览

How to Automate Database Table Dumping in MySQL Without Specifying Table Names?

MySQL 自动化数据库表转储

MySQL 提供了一种将表数据转储到单个文件的便捷方法,这对于备份目的非常有用。但是,在表数量可能随时间变化的动态环境中,在转储命令中手动指定每个表名称变得不切实际。本文探讨了一种自动化转储过程的解决方案,确保所有现有表都捕获在单独的文件中。

Automagic Dumping

虽然 MySQL 的默认语法需要了解表预先命名,没有直接命令自动转储所有表。但是,命令和脚本的组合可以完成此任务。

Script-fu 方法

一种方法涉及创建一个脚本来查询数据库以检索所有表名称。随后,它可以迭代列表并单独转储每个表。各种脚本语言都可以访问 MySQL 数据库,包括 Python、Perl 和 PHP。

示例 Bash 脚本

下面是将表数据转储为 SQL 命令的示例 Bash 脚本分成单独的压缩文件:

<code class="bash">#!/bin/bash

# Descr: Dump MySQL table data into separate SQL files for a specified database.
# Usage: Run without args for usage info.

[ $# -lt 3 ] && echo "Usage: $(basename ) <DB_HOST> <DB_USER> <DB_NAME> [<DIR>]" && exit 1

DB_host=
DB_user=
DB=
DIR=

[ -n "$DIR" ] || DIR=.
test -d $DIR || mkdir -p $DIR

echo -n "DB password: "
read -s DB_pass
echo
echo "Dumping tables into separate SQL command files for database '$DB' into dir=$DIR"

tbl_count=0

for t in $(mysql -NBA -h $DB_host -u $DB_user -p$DB_pass -D $DB -e 'show tables') 
do 
    echo "DUMPING TABLE: $DB.$t"
    mysqldump -h $DB_host -u $DB_user -p$DB_pass $DB $t | gzip > $DIR/$DB.$t.sql.gz
    tbl_count=$(( tbl_count + 1 ))
done

echo "$tbl_count tables dumped from database '$DB' into dir=$DIR"</code>

用法和好处

此脚本提示输入数据库密码并将数据转储到指定目录中的压缩文件中。添加新表时,无需手动更新转储脚本。此外,通过提供逗号分隔的数据库名称列表作为第三个参数,可以轻松扩展它以转储多个数据库。

以上是如何在MySQL中自动转储数据库表而不指定表名?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn