場景

昨天系統自動備份了某一個數據庫的全部表資料,名dbAll.sql.gz。檔案較大(如40G)

今天因發現某一個表tableA的一條資料存在問題,需核對兩條記錄的變化。需從dbAll中找回tableA的資料,以便比較該記錄。

操作方案

1.將dbAll.sql.gz匯入待比較的資料庫(臨時資料庫)中,然後比較tableA。不推介,因為資料量太大,很耗時

2.解壓dbAll.sql.gz後,通過Java程式碼讀取dbAll.sql中的關於tableA的CREATE語句及INSERT語句等到檔案tableA.sql,然後通過tableA.sql匯入臨時資料庫即可進行比較。

法1:perl extract_sql.pl -t mytable -r mydumpfile > mytable.sql 
法2:cat test1db.sql | sed -n ‘/Table structure for table .test1./,/Table structure for table .test2./p’>/tmp/xxx.sql 
法3:awk ‘/Table structure for table .test1./,/Table structure for table .test2./{print}’ src_bake_db.sql.gz > targetdb.sql

法3說明:將src_bake_db.sql.gz壓縮檔案中的test1、test2表的資料匯出到targetdb.sql中