2011-06-03 61 views
1

我试图将数据从一个MySQL数据库合并到另一个。问题是,Source_DB中的某些表具有Target_DB中的匹配表没有的字段。动态更改MySQL表添加丢失的字段INSERT

有没有办法自动ALTERTarget_DB表中添加这些缺失的字段,因为它们被发现?

或者我应该另辟蹊径,比如做第一遍比较每张表以首先添加任何缺失的字段?

+1

或者只是将来自'Target_DB'的数据插入'Source_DB'中,然后重命名这些表? :) – Konerak 2011-06-03 21:45:03

+0

一个有趣的想法,虽然我试图保持简单的单向操作。另外,我需要合并数据,而不是用另一个表的内容覆盖一个表。谢谢你的想法! – Ian 2011-06-03 21:58:49

+0

只是我注意到,我发现一个非常有趣的PHP脚本比较模式:http://joefreeman.co.uk/blog/2009/07/php-script-to-compare-mysql-database-schemas/ – Ian 2011-06-05 22:38:42

回答

2

您可以查询每个数据库上的INFORMATION_SCHEMA.COLUMNS,找出NOT IN查询中缺少的内容,然后使用INFORMATION_SCHEMA.COLUMNS中的数据动态生成DDL。

或者你可以使用像MySQL Compare这样的工具来做到这一点。

+0

非常有趣的工具,我会给你一个镜头。还要感谢您指出INFORMATION_SCHEMA.COLUMNS。这对于获取ALTER所需的数据非常有用。谢谢康拉德! – Ian 2011-06-03 21:57:47