Mysql 如何从本地数据库到远程数据库更新和插入记录

Mysql 如何从本地数据库到远程数据库更新和插入记录,mysql,Mysql,比如说,我必须离线进行记录更新和插入。 如何导入更新的记录而不进行复制,以及如何更新现有记录 我下面的命令行吗 cat新更新的_data.sql |/usr/bin/mysql-u root--password=xxx DBNAME 仅当INSERT命令有一个“ON DUPLICATE KEY UPDATE”子句,并且每个记录都有一个唯一的键时 如果不存在具有指定键的记录,这将使MySQL创建一个新记录。如果找到具有给定密钥的记录,将执行“ON DUPLICATE key UPDATE”子句,并

比如说,我必须离线进行记录更新和插入。 如何导入更新的记录而不进行复制,以及如何更新现有记录

我下面的命令行吗

cat新更新的_data.sql |/usr/bin/mysql-u root--password=xxx DBNAME


仅当INSERT命令有一个“ON DUPLICATE KEY UPDATE”子句,并且每个记录都有一个唯一的键时

如果不存在具有指定键的记录,这将使MySQL创建一个新记录。如果找到具有给定密钥的记录,将执行“ON DUPLICATE key UPDATE”子句,并更新指定的字段


一句话:一般来说,您不能重新应用SQL命令,也不能期望没有重复的命令。

我确实有防止重复的唯一键。如何通过命令行应用现有记录的更新?正如我在帖子中提到的那样?非常感谢,如果不修改
.SQL
文件中的SQL代码,您将无法执行此操作。您可以做的是运行脚本将数据插入到新的空表中。然后将一个
INSERT写入表SELECT FROM newtable ON replicate KEY UPDATE field1=VALUES(field1),field2=VALUES(field2),…
。这意味着我无法在转储的数据中实现这一点。听起来不太好!但是非常感谢你!如果可以控制mysqldump命令,可以查看
--insert ignore
--replace
选项。这些将生成SQL INSERT语句,这些语句要么忽略重复项(即,重复项将被忽略,现有行保持不变),要么用SQL文件中的新行替换现有行。