2

我每天从外部服务器接收 MySQL 转储文件 .sql,我无法控制该文件。我创建了一个本地数据库来将所有数据存储在 .sql 文件中。我希望我可以设置一个脚本来每天自动更新我的本地数据库。我每天收到的 sql 文件包含已经在本地数据库中的旧数据。如何避免此类旧数据的重复,只将新数据插入本地 MySQL 服务器?非常感谢!

4

5 回答 5

2

您可以使用第三方数据库比较工具(例如 Red Gate 的工具)来创建两个数据库,一个是当前数据库(您的“主数据库”),另一个是新的转储数据库。然后,您可以在两个版本之间运行比较工具并仅更新它们之间的更改,从而更新您的主版本。

于 2013-07-01T14:52:44.483 回答
1

对字段使用唯一约束,您希望是唯一的。此外,正如 Danny Beckett 所提到的,为了避免输出错误(我更愿意将其重定向到文件中以供将来分析,以检查我是否没有遗漏任何过程),您可以使用INSERT IGNORE构造而不是INSERT.

于 2013-07-01T14:51:17.690 回答
0

如果这是一个普通的 mysqldump 文件,那么通常它包含DROP TABLE IF EXISTS...语句和创建表语句,因此在导入数据时会重新创建表。所以重复数据应该不是问题,除非我遗漏了什么。

于 2013-07-01T15:13:44.213 回答
0

您可以使用 IGNORE 语句支持的约束。

第二个选项,您可以先将数据插入临时表。然后只插入差异。

使用第二个选项,您可能会使用一些限制来不通过添加存储在数据库中的记录来搜索重复项。

于 2013-07-01T14:55:09.987 回答
0

您需要在表中创建一个主键。它应该是列值的唯一组合。使用带有 IGNORE 的 INSERT 查询将避免在此表中添加重复项。

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

于 2013-07-01T15:07:19.833 回答