如何在事先不知道表名的情况下自动将 MySQL 表转储到单独的文件中?

Linda Hamilton
发布: 2024-10-30 15:19:03
原创
188 人浏览过

How can I automatically dump MySQL tables into separate files without knowing table names beforehand?

自动将 MySQL 表转储到单独的文件

Mysqldump 提供了一种将 MySQL 表转储到单独文件的便捷方法。然而,事先知道表名是一个限制。为了解决这个问题,有其他方法可以自动转储每个表。

基于脚本的方法:

通过利用 script-fu,您可以查询数据库以检索所有表名并创建一个执行转储的脚本。以下是一些能够访问 MySQL 数据库的脚本语言:

  • 使用 mysql-connector 或 sqlalchemy 的 Python
  • 使用 PDO 或 mysqli 的 PHP
  • 使用 mysql2 的 Ruby
  • 使用 JDBC 或 JPA 的 Java

自包含的 Bash 脚本:

提供的 Bash 脚本进一步简化了流程,无需额外的脚本知识:

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

# dump-tables-mysql.sh
[ $# -lt 3 ] && echo "Usage:  <DB_HOST> <DB_USER> <DB_NAME> [<DIR>]" && exit 1

DB_host=
DB_user=
DB=
DIR=

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

read -sp "DB password: " 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>
登录后复制

该脚本提示输入数据库密码,将每个表的数据转储到单独的压缩 SQL 文件中,并将它们存储在指定目录中。它处理所有必要的步骤,从检索表名到创建转储文件。

以上是如何在事先不知道表名的情况下自动将 MySQL 表转储到单独的文件中?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!