2011-06-29 121 views
4

我有兩個數據庫在MySQL中已經有數據。他們有完全相同的模式。我想將這兩個數據庫合併爲一個。我想:如果兩個數據庫都具有相同的模式,我可以將兩個數據庫合併爲一個在Mysql中的數據庫嗎?

mysqldump -u root -p --databases database1 database2 database3 > database1_database2_da 

然而,當我嘗試打開database1_database2_da,我只是結束了從數據庫中的一個數據,但不是所有的人。我也想提一下,這兩個數據庫的記錄從1開始,因爲它們是自動生成的。你認爲有一種方法可以合併這兩個數據庫而不會丟失其中的任何數據?

+0

它們是否有衝突的主鍵?在合併之前,您需要先處理數據,否則當您插入第二個轉儲時,您會收到PK違例和/或刪除的插入。 –

+0

我沒有看到任何衝突的主鍵,因爲我只從一個數據庫中獲取數據,就好像它正在覆蓋來自第二個數據庫的數據。 – T3000

回答

2

使用--no-create-info選項在每個數據庫上運行mysqldump以避免編寫架構信息。然後使用--no-data選項在一個數據庫上運行一次。如果您將所有這些文件按順序加載到同一個目標數據庫中,則應該可以工作,禁止兩個數據庫之間的模式差異或重複的主鍵。

mysqldump -u root -p --no-create-info database1 > database1.sql 
mysqldump -u root -p --no-create-info database2 > database2.sql 
mysqldump -u root -p --no-data database1 > schema.sql 

創建一個新的數據庫後,運行

mysql -uroot -p -Ddatabase3 < schema.sql 
mysql -uroot -p -Ddatabase3 < database1.sql 
mysql -uroot -p -Ddatabase3 < database2.sql 

這也可以正常工作。還沒有Windows機器上測試ATM

type schema.sql database1.sql database2.sql | mysql -uroot -p -Ddatabase3 
+0

以下的建議後,這是我剛剛得到的消息:「貓不被識別爲內部或外部命令,可操作的程序或批處理文件」 – T3000

+0

也許這個信息可以幫助,我使用的是Windows 07. – T3000

+1

嘿嘿。抱歉。我開始假設人們正在運行一個類UNIX操作系統,正在更新。 –

1

SQL-集線器(http://sql-hub.com)將讓你在一個單一的數據庫合併具有相同的架構多個數據庫。有一個免費的許可證可以讓你從用戶界面執行此操作,但如果您想要自動運行該過程,您可能需要爲許可證支付費用。對於具有2個數據庫的一次性任務,您應該可以使用免費許可證執行此操作。

相關問題