2011-06-03 64 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