mysql - 合并 2 个 MySQL 数据转储的最佳方法是什么?

标签 mysql sql

我们已经构建了一个以 MySQL 作为数据库的应用程序。每周我们从数据库中导出数据转储,并删除所有数据。现在我们想要将所有这些转储合并在一起以执行一些数据分析任务。

我们面临的问题是所有表的“id”字段都是自增的,所以它在所有数据转储中都是从1开始的,这导致表中有重复的ID。我相信一定有更好的方法来做到这一点,因为它应该是 MySQL 管理中的一项非常常见的任务。

最好的解决方法是什么?

最佳答案

如果您可以轻松识别您的外键字段(比如它们采用 *_id 形式),那么您可以使用您选择的脚本语言通过添加“id 空间偏移量”来修改转储文件中的主键和外键.

例如,假设您有两个转储文件并且您知道它们的主键范围不超过 1,000,000,您将第二个转储文件中的主键和外键递增 1,000,000。

实现起来并非易事,因为您必须检测语句中外键字段的位置,然后修改语句中其他位置相同列位置的值。

如果您的外键不容易通过通用命名约定识别,那么您必须为每个表保留单独的信息,以了解如何根据列位置找到它们的位置。

祝你好运。

关于mysql - 合并 2 个 MySQL 数据转储的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5675798/

相关文章:

php - 来自 HTML 表的 PHP 中的列明智总和

java - DHTMLX 调度程序日期和时间未保存到数据库

sql - Hive 中的多列爆炸

SQL count 连接不同的多列

mysql - MySQL 可以为 JSON 列动态创建索引吗?

MySQL 缓存结果?

MySQL递归查询查找多对多关系的所有父项

MySQL 连接错误 Google Cloud

sql - 在 Postgres 的单个索引中包含多个列

php - PHP 中准备好的 SQL 语句不更新 MySQL 数据库行