2017-04-05 56 views
0

所以,说我有一个包含4代表一SQL(MySQL的)数据库{A,B,C,d}MySQL数据导出工具

和我想创建其含有来自数据的子集的测试数据库第一个数据库(时间和类型)。

例如: “我想创建一个新的(结构相同的)数据库,其中包含过去两周用户”bob“的所有数据。”

最简单的方法是从第一个数据库转储两周的数据,使用vagrant/chef启动一个新的空数据库并导入转储数据。

但是,这不起作用,因为每个表都有彼此的外键。因此,如果我有两周的“A”数据,它可能依赖于来自“D”的一年的数据。

我目前的解决方案是使用我的Java应用程序的数据层将数据加载到内存中,然后将其插入到数据库中。但是,这不可持续/可扩展。

因此,我的问题是,有没有人知道任何工具或技巧将一组“完整”数据集从一个数据库迁移到另一个数据库,考虑一个表的时间段并包括所有其他相关数据从其他表中以及?

任何建议将是非常美妙的:)

+0

删除厨师标签,因为这似乎与有趣的厨师 – coderanger

回答

1

试试你的“幼稚的做法”,但SET FOREIGN_KEY_CHECKS=0;第一,然后运行您的备份查询,然后SET FOREIGN_KEY_CHECKS=1;

+0

有关,但我最好希望此工具能够在不知道每个表中包含哪些数据的情况下工作。 –

1

还有就是要重新创建数据的一部分类似数据库的方式,不是那么简单,但也可以使用:

  1. 创建新的数据库(仅架构),例如使用buckupschema comparer工具。
  2. 下一步是复制表格数据。你可以在数据比较器工具的帮助下完成它(查看模式比较器链接)。选择您需要的表并检查记录数据以进行同步。