从单表查询备份还原mysql

从单表查询备份还原mysql,mysql,Mysql,我有一个包含三个表的数据库。 我想创建第二个表中某些记录的备份文件: mysqldump --opt --user=${USER} --password=${PASS} --databases ${DATABASE} --where="id = $1" mydb Table2 > FILE.sql 问题出在使用此代码进行恢复时 mysql --user=${USER} --password=${PASS} ${DATABASE} < FILE.sql mysql--user=$

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

mysqldump --opt --user=${USER} --password=${PASS} --databases ${DATABASE} --where="id = $1" mydb Table2 > FILE.sql
问题出在使用此代码进行恢复时

mysql --user=${USER} --password=${PASS}  ${DATABASE} < FILE.sql
mysql--user=${user}--password=${PASS}${DATABASE}
它删除整个数据库并仅插入上一代码中选定的记录。
我希望只恢复选定的记录,而不删除其余的记录。

在使用mysqldump时,您应该尝试使用
--skip add drop table
选项


这将阻止将删除表项添加到sql导出。

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

这将阻止将删除表条目添加到sql导出。

您使用的是
[--databases][1]
标志,该标志在转储多个数据库时使用,而在仅转储单个表时不应使用

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

避免使用该参数,为了更好地衡量,请使用
--no create info
或干脆使用
-t
,以确保创建表/删除表命令不在转储文件中

您使用的是
[--databases][1]
在转储多个数据库时使用的标志,在只转储单个表时不应使用该标志

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


避免使用该参数,为了更好地衡量,请使用
--无创建信息
或简单地使用
-t
,以确保转储文件中不包含创建表/删除表命令

您是否尝试过逐个运行file.sql中的单个查询?当您说它正在删除整个数据库时,它实际上是在重新创建表吗?不是数据库?仅使用值重新创建第二个表​​您是否尝试过逐个运行FILE.sql中的单个查询?当您说它正在删除整个数据库时,它实际上是在重新创建表吗?不是数据库?仅使用值重新创建第二个表​​谢谢,最后一件事,我在运行还原时遇到此错误:键“PRIMARY”的重复项“506”如何强制还原所有项?这是因为表中已存在具有该主键的记录。事实上,这在这里已经被问到和回答过了。一种解决方案是加载到临时表中,然后执行插入忽略。。。啊,是的!我怎么忘了!谢谢您,最后一件事,我在运行还原时遇到此错误:键“PRIMARY”的重复条目“506”如何强制还原所有项?这是因为表中已存在具有该主键的记录。事实上,这在这里已经被问到和回答过了。一种解决方案是加载到临时表中,然后执行插入忽略。。。啊,是的!我怎么忘了!