【问题标题】:Mysqldump tables from different databases?来自不同数据库的Mysqldump表?
【发布时间】:2012-01-03 21:56:39
【问题描述】:

我要备份两个表:table1table2

table1 来自数据库 database1

table2 来自数据库 database2

有没有办法通过一个 mysqldump 调用来转储它们?

我知道我能做到:

mysqldump -S unixSocket --skip-comments --default-character-set=utf8 --databases database1 --tables table1 > /tmp/file.sql

但是如何从不同的数据库中转储两个表呢?

【问题讨论】:

  • 没有优雅的解决方案,为什么仅限于单个 mysqldump 调用?
  • 做两次,但第二次是>> /tmp/file.sql :-)。
  • @Michał Powaga 会追加到文件而不是重写吗?
  • @RichardKnop,是的,如果存在,它将附加到文件中,如果不存在,则创建新文件。 Redirection (computing) on Wikipedia
  • @Michał Powaga 好的,将其发布为答案,我会接受。

标签: mysql sql database mysqldump


【解决方案1】:

这可能是一种解决方法,但您可以忽略不想备份的其他表。

比如你的情况:

mysqldump --databases database1 database2 --ignore-table=database1.table2 --ignore-table=database2.table1

您需要使用每个 --ignore-table 语句定义您不想转储的每个表。

祝你好运!

【讨论】:

    【解决方案2】:

    对于 linux/bash,oneliner:

    (mysqldump dbname1 --tables table1; mysqldump dbname2 --tables table2) | gzip > dump.sql.gz

    【讨论】:

      【解决方案3】:

      两次使用mysqldump,但第二次使用重定向到文件作为附加>> /tmp/file.sql

      【讨论】:

      • 您不能将--databases与多个数据库结合使用--tables
      【解决方案4】:

      调用mysqldump的一般方式有3种:

      shell> mysqldump [options] db_name [tbl_name ...]
      shell> mysqldump [options] --databases db_name ...
      shell> mysqldump [options] --all-databases
      

      只有第一个允许您选择数据库和表名,但不允许多个数据库。如果您使用第二个或第三个选项,您将转储选定的数据库(第二个)或所有数据库(第三个)。

      所以,你可以这样做,但你需要转储到整个数据库。

      正如 Michał Powaga 在 cmets 中所说,您也可以这样做两次。

      第一次使用“> /tmp/file.sql

      第二次使用“>> /tmp/file.sql to append

      【讨论】:

        【解决方案5】:

        语法是:

        mysqldump --databases db_name1 [db_name2 ...] > my_databases.sql

        查看参考:http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html

        希望对你有帮助

        【讨论】:

        • 这会转储整个数据库,而问题是仅转储某些表
        猜你喜欢
        • 2011-06-21
        • 1970-01-01
        • 2018-02-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-05
        • 2014-02-26
        相关资源
        最近更新 更多