我有一个包含三个表的数据库。 我想在第二个表中创建一些记录的备份文件:
mysqldump --opt --user=${USER} --password=${PASS} --databases ${DATABASE} --where="id = $1" mydb Table2 > FILE.sql
问题在于使用此代码进行恢复。
mysql --user=${USER} --password=${PASS} ${DATABASE} < FILE.sql
它删除整个数据库并插入我以前代码中只选择的记录。 我希望只删除所选记录而不删除其余记录。
答案 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命令不在转储文件中