2012-06-26 160 views
0

我需要將生產mysql數據庫中的任何缺失行從備份數據庫合併到恢復到同一臺計算機上。合併兩個MySQL表

我該如何做到這一點,同時保留自動增量的原始主鍵ID。

+0

如果您在兩個數據庫上都插入了行,則可能有衝突的主鍵。如果不更改其中一個或另一個數據庫中的id,則可能無法進行合併。 –

回答

1

你可以試試:

INSERT IGNORE INTO table_1 SELECT * FROM table_2; 

允許這些行TABLE_1中,以取代那些具有匹配的主鍵TABLE_2,同時還插入了新的主鍵列。

或者,

REPLACE INTO table_1 SELECT * FROM table_2; 

將更新已經在與從TABLE_2相應的行TABLE_1那些行中,同時插入與新的主鍵的行。

+0

缺失的行是否會繼續使用相同的主鍵,或者它們是否會在表的末尾自動增加,因此不能與其他表正確鏈接? –

+0

他們將使用與它們相同的主鍵。 –

0
--create a backup just in case 
CREATE TABLE table_prod_sav SELECT * FROM table_prod; 

--insert the missing rows 
INSERT INTO table_prod (id, field) 
    SELECT b.id, b.field 
    FROM table_backup b LEFT JOIN table_prod p ON b.id = p.id 
    WHERE p.id IS NULL; 

--Check consistency... 

--DROP TABLE table_prod_sav;