代码之家  ›  专栏  ›  技术社区  ›  mabuzer

在MySQL中从数据库转储表?

  •  4
  • mabuzer  · 技术社区  · 14 年前

    如何使用该表名将数据库中的每个表转储到单独的文件中?

    2 回复  |  直到 12 年前
        1
  •  2
  •   Daniel Vassallo    14 年前

    您可能需要查看以下文章中建议的shell脚本:

    脚本:

    #!/bin/bash
    db=$1
    if [ "$db" = "" ]; then
    echo "Usage: $0 db_name"
    exit 1
    fi
    mkdir $$
    cd $$
    clear
    for table in `mysql $db -e 'show tables' | egrep -v 'Tables_in_' `; do
    echo "Dumping $table"
    mysqldump --opt -Q $db $table > $table.sql
    done
    if [ "$table" = "" ]; then
    echo "No tables found in db: $db"
    fi
    
        2
  •  0
  •   deadly    12 年前

    下面是一个Linux命令行,用于备份 YOURDATABASENAME 要在特定路径中分隔文件,请执行以下操作:

    你必须更换 您的数据库名称 YOURPATH 具有适当的值。

    for I in $(mysql --database=YOURDATABASENAME -e 'show tables' -s --skip-column-names); do mysqldump YOURDATABASENAME $I | gzip > "/YOURPATH/YOURDATABASENAME/$I.sql.gz"; done
    

    我将它用作计划的cron作业,每天备份所有表。

    注意:如果从Linux命令行使用此命令,则必须将具有全局权限的用户添加到数据库中 YOURUSERNAME@localhost 没有密码。否则,您将不得不按如下方式向脚本添加用户和密码选项,但这将要求每个表都有一个密码!

     for I in $(mysql -u MYSQLUSERNAME -p --database=YOURDATABASENAME -e 'show tables' -s --skip-column-names); do mysqldump -u MYSQLUSERNAME -p YOURDATABASENAME $I | gzip > "/YOURPATH/YOURDATABASENAME/$I.sql.gz"; done