mysql從匯出資料的sql檔案中只匯入指定的一個表
阿新 • • 發佈:2019-01-02
場景
昨天系統自動備份了某一個數據庫的全部表資料,名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中