MySQL将数据从两个不同的数据库导入一个数据库或合并两个数据库数据

时间:2016-12-20 12:40:36

标签: mysql

我有两个数据库需要将两个数据库合并到一个数据库中。例如

let_client1(与let_client2数据库相同的字段和表号)

let_client2

我在两个数据库上都有99个表,在两个数据库中也有5个表。

有很多索引,主键和外键关系,所以如何在一个数据库中合并两个数据库。在Mysql中有什么最好的方法吗?

2 个答案:

答案 0 :(得分:0)

作为起点,您可以在select语句中使用insert:

INSERT INTO let_client1.table1 (field1, field2, etc)
SELECT field1, field2, etc
FROM let_client2.table1

这会将let_client2.table1中的数据合并到let_client1.table1中,但请注意主键违规和外键限制,因此您需要首先对具有依赖项的表执行此操作。

如果你想要一个纯粹的自动解决方案,我会建议使用游标来选择表并将它们的名称传递给进行合并的过程,但是你很容易遇到我刚才描述的问题。 http://dev.mysql.com/doc/refman/5.7/en/cursors.html

至于索引,如果他们需要转移,这里有一个相关的问题已经有答案:MySql, how can I export indexes from my development database to my production database?

答案 1 :(得分:0)

没有一种简单的方法可以做到这一点,因为它取决于表定义。

  • 如果使用自动增量主键,则两个数据库可能都使用相同的值。这些必须以某种方式进行调整。

  • 外键约束要求以特定顺序加载表。否则,您可以在执行数据加载时使用failonerror

我认为您必须编写一个脚本来以适合您特定情况的方式进行数据合并。

您可以使用INFORMATION_SCHEMA获取表列表和外键约束列表。

您不必转移索引或视图。在将数据加载到表中时,它们都将被填充。 MySQL视图不存储数据,它们只查询基表。