1. 程式人生 > 資料庫 >mysql實現從匯出資料的sql檔案中只匯入指定的一個表

mysql實現從匯出資料的sql檔案中只匯入指定的一個表

場景

昨天系統自動備份了某一個數據庫的全部表資料,名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匯入臨時資料庫即可進行比較。

3.參見(沒試過):mysqldump 匯出的是全庫 alldb.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中

補充知識:mysql命令列匯出整個庫裡面所有表的前一百條資料

如下所示:

mysqldump -uysp -pYspxxx db_name --where="1=1 limit 100" >/mnt/share/paxxx.com/backup.sql

直接在命令列執行就可以了,不需要登陸mysql客戶端。

mysqldump -h 伺服器名 -u 賬號名-p 資料庫名 --where="true limit 100"> /tmp/supports_launch.sql

phpmyadmin匯出php指令碼:

http://local.phpmyadmin.com/export.php

以上這篇mysql實現從匯出資料的sql檔案中只匯入指定的一個表就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。