从单个表的查询备份恢复mysql

时间:2016-09-07 10:14:55

标签: mysql

我有一个包含三个表的数据库。 我想在第二个表中创建一些记录的备份文件:

mysqldump --opt --user=${USER} --password=${PASS} --databases ${DATABASE} --where="id = $1" mydb Table2 > FILE.sql

问题在于使用此代码进行恢复。

mysql --user=${USER} --password=${PASS}  ${DATABASE} < FILE.sql

它删除整个数据库并插入我以前代码中只选择的记录。 我希望只删除所选记录而不删除其余记录。

2 个答案:

答案 0 :(得分:0)

使用mysqldump时应该尝试使用--skip-add-drop-table选项。

http://dev.mysql.com/doc/refman/5.5/en/mysqldump.html

这样可以防止将删除表条目添加到sql导出中。

答案 1 :(得分:0)

您正在使用转储多个数据库时使用的[--databases][1]标志,并且当您只想转储一个表时不应使用该标志。

  

转储几个数据库。通常,mysqldump会处理名字   命令行上的参数作为数据库名称,后面的名称为   表名。使用此选项,它将所有名称参数视为   数据库名称。 CREATE DATABASE和USE语句包含在   在每个新数据库之前输出。

避免使用该参数,并且为了获得良好的衡量标准,请使用--no-create-info或仅使用-t来确保create table / drop table命令不在转储文件中