如何從mysql備份中提取單張表資料

2022-02-19 01:23:49 字數 1326 閱讀 2947

1、先提取備份資料中的前50行出來,檢視一下備份資料格式

head -50 bakdb.sql > head50.txt

類似下面的資料是我們所需要提取的:

/*!40101 set @old_character_set_client=@@character_set_client */;

/*!40101 set @old_character_set_results=@@character_set_results */;

/*!40101 set @old_collation_connection=@@collation_connection */;

/*!40101 set names utf8 */;

/*!40103 set @old_time_zone=@@time_zone */;

/*!40103 set time_zone='+00:00' */;

/*!40014 set @old_unique_checks=@@unique_checks, unique_checks=0 */;

/*!40014 set @old_foreign_key_checks=@@foreign_key_checks, foreign_key_checks=0 */;

/*!40101 set @old_sql_mode=@@sql_mode, sql_mode='no_auto_value_on_zero' */;

/*!40111 set @old_sql_notes=@@sql_notes, sql_notes=0 */;

-- table structure for table `table_1`

說明:1、前半部分是設定資料的格式,可防止所匯入的資料出現亂碼

2、下半部分表面了乙個表資料的開始,只要我們能把指定表的開始到下乙個表的開始中間部分內容提取出來,我們的目的就達成了

2、確認指定表的下乙個表的開始,按理說,表名順序都是按字母排序的,我們可以用 sqlyog 檢視得到,但為了以防萬一,我們有必要確認一下

grep "table structure for table" bakdb.sql > tables.txt

3、確認表名後,開始提取指定表資料

awk '/-- table structure for table `table_1`/,/-- table structure for table `table_2`/' bakdb.sql >> head50.txt

說明:提取出來的資料是不指定庫名的,我們有必要在語句開始前指定庫名,避免匯入資料時導錯地方

在「-- table structure for table `table_1`」下一行加多「use `database_name`;」

從檔案中提取數字

程式的功能是從指定的檔案中提取所有的整數,並把它們依次存入到乙個字串中 void iostest char a 50 char b 50 istrstream sin a ostrstream sout b,sizeof b ifstream file1 w1.dat ios in ios nocr...

如何從ps aux的結果中提取pid?

首先我們需要使用grep來取出我們想要檢視的程序。例如如果我們想要檢視所有含有關鍵字process的程序,則執行如下命令 ps aux grep process之後會顯示為如下格式 user pid cpu mem vsz rss tt stat started time command我們如果想要...

如何從字串中提取數值

如何從字串中提取數值,比如從 10 16mn 中提取10這個數值,當然在字串中 後面 的數值長度不定,而 中的字串長度也不定。來個迴圈比較看看,條件是 in 0.9 str abc056 s for i 1 to length str do begin if str i in 0 9 then s ...