我想备份两个表: table1 和 table2 。
table1 来自数据库 database1 。
table2 来自数据库 database2 。
有没有办法通过一个mysqldump调用来转储它们?
我知道我能做到:
mysqldump -S unixSocket --skip-comments --default-character-set=utf8 --databases database1 --tables table1 > /tmp/file.sql
但是如何从不同的数据库转储两个表?
答案 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语句定义您想要转储的每个表。
祝你好运!