2012-11-26 52 views
0

我有兩個服務器包含相同的數據庫,具有不同值的相同表結構 。我需要比較兩個 列中的一列(ID)的計數,如果server1的db的table1的max(ID)> max(ID)server2的db的 table1,則將所有新記錄從server1插入到server2使用mysql比較和插入shell內部的邏輯

我需要將這個邏輯保存在一個shell腳本中,這樣當我調用.sh文件 時,它將爲我完成這項工作。我想從我的本地計算機上訪問這些服務器來訪問 。

如何在shell腳本內進行比較。我使用的是Mysql DB

回答

0

從我的聲明中得到的結果是,您希望繼續檢查是否有任何表的記錄比另一個表多。並用更多的條目複製表格。我建議的是,既然你想使用腳本文件來自動化任務,我會給你兩種方法:

(i)你可以創建一個mysql-dump-file而不是比較列標識符對於每個表格並通過比較大小來檢查哪一個具有更多數量的字符。顯然更多的人更多。因此,用較大的轉儲覆蓋小表。 (ii)首先將兩個表的COUNT(*)的輸出存儲在兩個變量中並進行比較。

$tableCount1=$(`echo mysql -u <username> -p<password> -h <address> < <input-file>.sql` | cut -d' ' -f2) 

當你輸入文件將具有內容:

USE <schema> 
    SELECT COUNT(*) FROM <table>; 

比較的ID,然後用大表的轉儲替換較小的表!

如果你不希望替換整個表,然後使用:

mysqldump -u <username> -p<password> -h <address> <schema> <table> --skip-triggers --compact --no-create-info --where=<column_id> > <id> > <output-file>.sql 
+0

我並不需要通過編寫總表。我只需要將新記錄添加到表格中。 – syncdm2012

+0

我已經更新了我的答案! –

+0

感謝Nehal J. Wani – syncdm2012