来自不同数据库的Mysqldump表?

时间:2011-11-22 14:07:57

标签: mysql sql database mysqldump

我想备份两个表: table1 table2

table1 来自数据库 database1

table2 来自数据库 database2

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

我知道我能做到:

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

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

5 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:2)

语法为:

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

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

希望有所帮助

答案 2 :(得分:1)

有三种通用方法可以调用 mysqldump

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

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

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

正如MichałPowaga在评论中所说,你可能也会这样做两次。

  

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

     

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

答案 3 :(得分:0)

对于linux / bash,oneliner:

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

答案 4 :(得分:0)

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

例如在你的情况下:

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

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

祝你好运!