版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
PAGE12PAGE12PAGE11PAGE11
課題數(shù)據(jù)的備份與恢復(fù)課時2課時(90min)教學(xué)目標(biāo)知識技能目標(biāo):(1)了解數(shù)據(jù)丟失的原因及如何定制備份與恢復(fù)策略(2)掌握使用mysqldump和二進制日志對數(shù)據(jù)進行備份和恢復(fù)的方法(3)掌握數(shù)據(jù)表導(dǎo)出和導(dǎo)入的操作方法素質(zhì)目標(biāo):(1)懂得人與自然應(yīng)和諧共生,自覺愛護環(huán)境(2)懂得防患于未然的道理教學(xué)重難點教學(xué)重點:數(shù)據(jù)丟失的原因及如何定制備份與恢復(fù)策略教學(xué)難點:使用mysqldump和二進制日志對數(shù)據(jù)進行備份和恢復(fù)的方法教學(xué)方法案例分析法、問答法、討論法、講授法、實踐法教學(xué)用具電腦、投影儀、多媒體課件、教材教學(xué)設(shè)計第1節(jié)課:→→→傳授新知(38min)第2節(jié)課:→傳授新知(20min)→課堂實訓(xùn)(15min)→課堂小結(jié)(3min)→作業(yè)布置(2min)教學(xué)過程主要教學(xué)內(nèi)容及步驟設(shè)計意圖第一節(jié)課課前任務(wù)【教師】布置課前任務(wù),和學(xué)生負(fù)責(zé)人取得聯(lián)系,讓其提醒同學(xué)通過文旌課堂APP或其他學(xué)習(xí)軟件,預(yù)習(xí)本節(jié)課要學(xué)習(xí)的知識【學(xué)生】完成課前任務(wù)通過課前任務(wù),使學(xué)生預(yù)習(xí)本節(jié)課要學(xué)習(xí)的知識,增加學(xué)生的學(xué)習(xí)興趣考勤(2min)【教師】使用文旌課堂APP進行簽到【學(xué)生】班干部報請假人員及原因培養(yǎng)學(xué)生的組織紀(jì)律性,掌握學(xué)生的出勤情況問題導(dǎo)入(5min)【教師】提出以下問題:如何防止數(shù)據(jù)丟失或者損壞?·通過問題導(dǎo)入,引導(dǎo)學(xué)生主動思考,激發(fā)學(xué)生的學(xué)習(xí)興趣傳授新知(38min)【教師】通過學(xué)生的回答引入要講的知識,講解備份與恢復(fù)策略,以及數(shù)據(jù)備份、數(shù)據(jù)恢復(fù)的相關(guān)知識16.1備份與恢復(fù)策略對于一個數(shù)據(jù)庫管理員來說,針對可能造成數(shù)據(jù)丟失的原因,制定合理的備份與恢復(fù)策略以防止數(shù)據(jù)丟失是非常必要的。?【教師】隨機邀請學(xué)生回答以下問題:可能造成數(shù)據(jù)丟失的原因有哪些??【學(xué)生】聆聽、思考、回答?【教師】總結(jié)學(xué)生的回答實際應(yīng)用中,可能造成數(shù)據(jù)丟失的原因主要有以下幾方面:存儲介質(zhì)損壞:人為或自然災(zāi)害導(dǎo)致存儲數(shù)據(jù)的磁盤損壞。用戶誤操作:誤刪或修改了某些重要數(shù)據(jù)。服務(wù)器崩潰:高并發(fā)或者大流量導(dǎo)致數(shù)據(jù)庫服務(wù)器崩潰。人為破壞:遭到特殊人員的惡意攻擊。?【教師】講解“和諧共生”的案例(詳見教材),讓學(xué)生懂得人與自然應(yīng)和諧共生,自覺愛護環(huán)境?【教師】隨機邀請學(xué)生回答以下問題:進行數(shù)據(jù)備份與恢復(fù)操作時應(yīng)考慮哪些內(nèi)容??【學(xué)生】聆聽、思考、回答?【教師】總結(jié)學(xué)生的回答進行數(shù)據(jù)備份與恢復(fù)操作時應(yīng)考慮以下幾點:對特別重要的數(shù)據(jù)應(yīng)保留多個備份。確定使用完整備份還是增量備份。完整備份的優(yōu)點是備份保持最新,恢復(fù)時可以花費更短時間;缺點是如果數(shù)據(jù)量很大,備份會花費很長時間,并對系統(tǒng)造成較長時間的壓力。而增量備份恰好相反,只需要備份每天的增量日志,花費時間短,且對負(fù)載壓力?。黄淙秉c是恢復(fù)時需要完整備份加上故障前的所有增量備份,恢復(fù)時間長且比較繁瑣?!咎崾尽吭隽總浞菔侵冈谝淮瓮暾麄浞莼蛏弦淮卧隽總浞莺?,以后每次只需備份與前一次相比增加或者被修改的文件。這就意味著,第一次增量備份的對象是進行完整備份后所增加和修改的文件;第二次增量備份的對象是進行第一次增量備份后所增加和修改的文件,依此類推??梢钥紤]使用復(fù)制數(shù)據(jù)文件的方法作異地備份,但這種方法無法對誤操作的數(shù)據(jù)進行恢復(fù)。要定期對數(shù)據(jù)進行備份,并且要在系統(tǒng)負(fù)載較小的時間段進行。確保開啟二進制日志,這樣可以基于時間點或位置對數(shù)據(jù)進行恢復(fù)。定期作備份恢復(fù)測試,保證備份是有效的,并且是可以恢復(fù)的。16.2數(shù)據(jù)備份?【教師】組織學(xué)生掃碼觀看“數(shù)據(jù)備份”視頻(詳見教材),讓學(xué)生對操作步驟有一個大致地了解16.2.1使用mysqldump備份數(shù)據(jù)庫mysqldump是MySQL自身提供的一個非常好用的數(shù)據(jù)庫備份工具。它可以將數(shù)據(jù)備份為一個文本文件,其中包含一組能夠被執(zhí)行以再現(xiàn)原始數(shù)據(jù)庫對象定義和表數(shù)據(jù)的SQL語句,如CREATE和INSERT語句。使用mysqldump備份數(shù)據(jù)庫的基本語法形式如下:mysqldump-uuser-ppassword[options]db_name1[db_name2…]>[path/]db_name.sql上述語句中,user表示用戶名;password表示登錄密碼;options表示備份參數(shù);db_name1表示數(shù)據(jù)庫名稱,多個數(shù)據(jù)庫之間使用空格隔開;“>”符號表示mysqldump工具要將備份寫入文件;path表示文件存儲路徑,如果不指定,文件默認(rèn)會存儲在當(dāng)前登錄系統(tǒng)的用戶名下,比如當(dāng)前登錄用戶名為ccy,則文件存儲在C:\Users\ccy目錄下;db_name.sql表示備份所生成的文件?!緦嵗?6-1】使用mysqldump備份數(shù)據(jù)庫。步驟
1打開命令窗口,在其中輸入mysqldump備份命令并執(zhí)行,然后輸入MySQL登錄密碼,結(jié)果如下:C:\Users\ccy>mysqldump-uroot-pstaff>D:\backupdata\staff.sqlEnterpassword:C:\Users\ccy>?【教師】通過多媒體展示“使用mysqldump生成的備份文件”圖片(詳見教材),幫助學(xué)生對這些內(nèi)容有更直觀地認(rèn)識步驟
2找到生成的備份文件staff.sql,使用文本編輯器將其打開并查看可以看到,備份文件開頭首先表明了使用的mysqldump工具版本號,然后是備份賬戶名和主機信息,以及備份的數(shù)據(jù)庫名,最后是MySQL服務(wù)器版本號,此處為5.7.18。備份文件中接下來是一些SET語句,這些語句將一些系統(tǒng)變量值賦給用戶定義變量,以確保被恢復(fù)的數(shù)據(jù)庫系統(tǒng)變量和原來備份時的變量相同。另外需要注意,這些語句以數(shù)字開頭,其中的數(shù)字代表MySQL服務(wù)器版本號,它意味著只有在該版本或者比該版本高的MySQL中才能執(zhí)行。備份文件中以--開頭的語句為注釋語句;以/*!開頭,*/結(jié)尾的語句為可執(zhí)行的MySQL注釋。這些語句可以被MySQL執(zhí)行,但在其他數(shù)據(jù)庫管理系統(tǒng)中將被作為注釋忽略。使用mysqldump工具也可以備份所有數(shù)據(jù)庫,語法形式如下:mysqldump-uroot-p--all-database>all.sql16.2.2使用mysqldump備份數(shù)據(jù)表使用mysqldump還可以備份數(shù)據(jù)表,基本語法形式如下:mysqldump-uusername-p[options]db_nametb_name[tb_name2…]>[path/]tb_name.sql上述語句中,tb_name表示數(shù)據(jù)表名,使用空格與數(shù)據(jù)庫隔開。如果要備份多個表,各表名之間也用空格隔開?!緦嵗?6-2】使用mysqldump備份數(shù)據(jù)表。步驟
1打開命令窗口,在其中輸入mysqldump備份命令并執(zhí)行,備份company數(shù)據(jù)庫中的tb_worker表和tb_department表。結(jié)果如下:C:\Users\ccy>mysqldump-uroot-pcompanytb_workertb_department>D:\backupdata\w_d.sqlEnterpassword:C:\Users\ccy>步驟2使用文本編輯器查看備份文件w_d.sql,結(jié)果如圖16-2所示。?【教師】通過多媒體展示“查看備份文件w_d.sql”圖片(詳見教材),幫助學(xué)生對這些內(nèi)容有更直觀地認(rèn)識【提示】在MySQL服務(wù)運行的情況下,為了保證數(shù)據(jù)的一致性,需要特別注意的是:備份MyISAM存儲引擎類型的表時,要在mysqldump命令中加上--lock-tables參數(shù),用于將所有的數(shù)據(jù)表加上讀鎖,這樣在備份期間,所有表將只能讀取而不能進行數(shù)據(jù)更新;而對于InnoDB存儲引擎類型的表,最好使用參數(shù)--single-transaction,這樣可以使InnoDB存儲引擎生成一個快照。16.3數(shù)據(jù)恢復(fù)?【教師】組織學(xué)生掃碼觀看“數(shù)據(jù)恢復(fù)”視頻(詳見教材),讓學(xué)生對操作步驟有一個大致地了解數(shù)據(jù)庫管理員操作失誤、計算機故障以及其他意外情況,都有可能導(dǎo)致數(shù)據(jù)丟失或破壞。當(dāng)數(shù)據(jù)丟失或遭到意外破壞時,可以使用數(shù)據(jù)備份恢復(fù)數(shù)據(jù)以減少損失。本節(jié)主要介紹數(shù)據(jù)恢復(fù)的方法。16.3.1使用MySQL命令恢復(fù)數(shù)據(jù)使用MySQL命令恢復(fù)數(shù)據(jù)非常簡單,基本語法形式如下:mysql-uuser-ppassworddb_name<[path/]db_name.sql【實例16-3】使用MySQL命令恢復(fù)數(shù)據(jù)。步驟1登錄MySQL,并執(zhí)行以下語句,刪除實例16-1備份過的staff數(shù)據(jù)庫。DROPDATABASEstaff;步驟2恢復(fù)數(shù)據(jù)庫之前,首先執(zhí)行以下語句創(chuàng)建空數(shù)據(jù)庫staff,然后退出MySQL。CREATEDATABASEstaff;步驟3執(zhí)行SQL語句,使用MySQL命令恢復(fù)數(shù)據(jù)庫……(詳見教材)如果要恢復(fù)16.2.2節(jié)中備份的兩個表中的數(shù)據(jù),可以先刪除這兩個表:tb_worker表和tb_department表,然后退出MySQL,并執(zhí)行以下命令恢復(fù)數(shù)據(jù)表。mysql-uroot-pcompany<D:\backupdata\w_d.sql16.3.2使用二進制日志恢復(fù)數(shù)據(jù)15.2節(jié)介紹了二進制日志的相關(guān)操作,本節(jié)介紹其在實際操作中的應(yīng)用。我們知道,開啟二進制日志后,系統(tǒng)會自動記錄用戶執(zhí)行的數(shù)據(jù)更新操作??梢詫⒍M制日志看作一個備份,使用mysqlbinlog命令恢復(fù)數(shù)據(jù)。使用mysqlbinlog命令可以完全恢復(fù)數(shù)據(jù),其基本語法形式如下:mysqlbinloglog_name|mysql-uuser-ppass上述語句中,log_name表示二進制日志文件名?!緦嵗?6-4】使用二進制日志恢復(fù)數(shù)據(jù)。本實例將模擬存儲介質(zhì)損壞導(dǎo)致數(shù)據(jù)丟失后,如何使用二進制日志恢復(fù)數(shù)據(jù)。步驟
1登錄MySQL,創(chuàng)建demo數(shù)據(jù)庫,然后創(chuàng)建tb_demo表并插入兩條記錄。SQL語句及其執(zhí)行結(jié)果如下:mysql>CREATEDATABASEdemo;QueryOK,1rowaffected(0.06sec)mysql>USEdemo;Databasechangedmysql>CREATETABLEtb_demo(->idINT(11)PRIMARYKEY,->namevarchar(30)->);QueryOK,0rowsaffected(0.36sec)mysql>INSERTINTOtb_demo(id,name)VALUES(1,'mary');QueryOK,1rowaffected(0.05sec)mysql>INSERTINTOtb_demo(id,name)VALUES(2,'lucy');QueryOK,1rowaffected(0.05sec)步驟
2退出MySQL,并執(zhí)行mysqlbinlog命令,查看二進制日志文件,其中詳細(xì)記錄了MySQL執(zhí)行的每一步操作,關(guān)鍵代碼如下:mysql>exit;ByeC:\Users\ccy>mysqlbinlogF:\mysql-5.7.18-winx64\data\ccy-bin.000017/*!50530SET@@SESSION.PSEUDO_SLAVE_MODE=1*/;#省略部分內(nèi)容CREATEDATABASEdemo/*!*/;#at313#18062810:31:30serverid1end_log_pos378CRC320x86046a37Anonymous_GTIDlast_committed=1sequence_number=2SET@@SESSION.GTID_NEXT='ANONYMOUS'/*!*/;#at378#18062810:31:30serverid1end_log_pos516CRC320x2df63bdfQuerythread_id=3exec_time=0error_code=0use`demo`/*!*/;SETTIMESTAMP=1530153090/*!*/;CREATETABLEtb_demo(idINT(11)PRIMARYKEY,namevarchar(30))/*!*/;#at516#省略部分內(nèi)容SETTIMESTAMP=1530153197/*!*/;INSERTINTOtb_demo(id,name)VALUES(1,'mary')/*!*/;#at779#省略部分內(nèi)容SETTIMESTAMP=1530153227/*!*/;INSERTINTOtb_demo(id,name)VALUES(2,'lucy')/*!*/;#at1073#省略部分內(nèi)容步驟
3登錄MySQL,并執(zhí)行SQL語句暫停二進制日志,然后刪除demo數(shù)據(jù)庫,模擬存儲介質(zhì)損壞導(dǎo)致數(shù)據(jù)丟失……(詳見教材)【學(xué)生】聆聽、思考、記錄通過教師的講解和演示,使學(xué)生了解備份與恢復(fù)策略,以及數(shù)據(jù)備份、數(shù)據(jù)恢復(fù)的相關(guān)知識第二節(jié)課問題導(dǎo)入(5min)【教師】提出以下問題:實際應(yīng)用中,如何將數(shù)據(jù)庫中的數(shù)據(jù)導(dǎo)出到外部存儲文件中?【學(xué)生】思考、舉手回答通過問題導(dǎo)入,引導(dǎo)學(xué)生主動思考,激發(fā)學(xué)生的學(xué)習(xí)興趣傳授新知(20min)【教師】通過學(xué)生的回答引入新知,介紹導(dǎo)出和導(dǎo)入表的相關(guān)知識16.4表的導(dǎo)出和導(dǎo)入?【教師】隨機邀請學(xué)生回答以下問題:MySQL數(shù)據(jù)庫中的數(shù)據(jù)可以導(dǎo)出哪些格式的文件??【學(xué)生】聆聽、思考、回答?【教師】總結(jié)學(xué)生的回答實際應(yīng)用中,有時需要將數(shù)據(jù)庫中的數(shù)據(jù)導(dǎo)出到外部存儲文件中。MySQL數(shù)據(jù)庫中的數(shù)據(jù)可以導(dǎo)出為sql文本文件、xml文件或者h(yuǎn)tml文件。同樣,這些文件也可以導(dǎo)入到MySQL數(shù)據(jù)庫中。16.4.1使用SELECT…INTOOUTFILE導(dǎo)出文本文件在MySQL數(shù)據(jù)庫中導(dǎo)出數(shù)據(jù)時,允許使用包含導(dǎo)出定義的SELECT語句進行數(shù)據(jù)的導(dǎo)出操作。導(dǎo)出文件被創(chuàng)建在服務(wù)器主機上,因此必須有文件寫入權(quán)限(FILE權(quán)限),才能使用該方法。SELECT…INTOOUTFILE語句的基本語法格式如下:SELECTcolumnlistFROMtableWHEREconditionINTOOUTFILE'filename'[OPTIONS]INTOOUTFILE語句的作用是把前面SELECT語句查詢出的結(jié)果導(dǎo)出到名為“filename”的外部文件中。[OPTIONS]為可選參數(shù),[OPTIONS]部分的語法包括FIELDS和LINES子句,其可能的取值為:FIELDSTERMINATEDBY'value'FIELDS[OPTIONALLY]ENCLOSEDBY'value'FIELDSESCAPEDBY'value'LINESSTARTINGBY'value'LINESTERMINATEDBY'value'可以看出,在FIELDS子句中有三個子句:TERMINATEDBY、[OPTIONALLY]ENCLOSEDBY和ESCAPEDBY。如果指定了FIELDS子句,則這三個子句中至少要指定一個。下面簡單介紹每個子句的意義及其用法:TERMINATEDBY:用于指定字段值之間的符號,默認(rèn)為“\t”制表符。例如,“TERMINATEDBY','”指定了逗號作為兩個字段值之間的標(biāo)志。ENCLOSEDBY:用于指定包裹文件中字符值的符號。例如,“ENCLOSEDBY'"'”表示文件中字符值放在雙引號之間。若加上關(guān)鍵字OPTIONALLY,則只包括CHAR和VARCHAR等字符數(shù)據(jù)字段。ESCAPEDBY:用于指定轉(zhuǎn)義字符。例如,“ESCAPEDBY'*'”表示將“*”指定為轉(zhuǎn)義字符,取代“\”,如空格將表示為“*N”。在LINES子句中有兩個子句:STARTINGBY和TERMINATEDBY。STARTINGBY:用于指定每行開始的標(biāo)志,可以為單個或多個字符,默認(rèn)情況下不使用任何字符。TERMINATEDBY:用于指定每行結(jié)束的標(biāo)志。如“LINESTERMINATEDBY'?'”表示以“?”作為每行的結(jié)束標(biāo)志,默認(rèn)值為“\n”(換行)。FIELDS子句和LINES子句都是自選的,但是如果兩個都指定了,F(xiàn)IELDS子句必須位于LINES子句前面?!緦嵗?6-5】使用SELECT…INTOOUTFILE語句將company數(shù)據(jù)庫中tb_department表中的記錄導(dǎo)出到文本文件。登錄MySQL并執(zhí)行SELECT…INTOOUTFILE語句。SQL語句及其執(zhí)行結(jié)果如下:mysql>SELECT*FROMcompany.tb_departmentINTOOUTFILE"D:/backupdata/tb_department.txt";QueryOK,4rowsaffected(0.00sec)此處將路徑中的反斜線\改成了/,是因為MySQL會把\識別為轉(zhuǎn)義字符。打開D:/backupdata目錄,可以看到生成的文本文件tb_department.txt,打開文件?【教師】組織學(xué)生掃碼觀看“導(dǎo)出的文本文件”視頻(詳見教材),讓學(xué)生對相關(guān)知識有一個大致了解可以看出,默認(rèn)情況下MySQL使用制表符\t分割不同字段,且字段沒有被其他字符括起來。另外,在Windows平臺下使用記事本打開該文件,顯示的格式與此處不一定相同,可能所有記錄顯示在同一行。這是因為Windows系統(tǒng)下的回車換行符為\r\n,而默認(rèn)換行符為\n。如果在執(zhí)行上述語句時提示ERROR1290(HY000):TheMySQLserverisrunningwiththe--secure-file-privoptionsoitcannotexecutethisstatement錯誤,可以執(zhí)行SHOWvariablesLIKE'%secure%';語句,查看secure_file_priv值,結(jié)果如下:mysql>SHOWvariablesLIKE'%secure%';+++|Variable_name|Value|+++|require_secure_transport|OFF||secure_auth|ON||secure_file_priv|NULL|+++3rowsinset,1warning(0.00sec)查看官方文檔可知,secure_file_priv參數(shù)用于限制LOADDATA,SELECT…OUTFILE,LOAD_FILE()命令執(zhí)行后傳到哪個指定目錄。secure_file_priv值為NULL時,表示限制mysqld不允許導(dǎo)入或?qū)С?。secure_file_priv為/tmp時,表示限制mysqld只能在/tmp目錄中執(zhí)行導(dǎo)入導(dǎo)出,其他目錄不能執(zhí)行。secure_file_priv沒有值時,表示不限制mysqld在任意目錄的導(dǎo)入導(dǎo)出。由上述查詢結(jié)果可知,secure_file_priv值默認(rèn)為NULL,表示不允許導(dǎo)入或?qū)С?。解決方法為:打開配置文件f或my.ini,在其中加入以下語句并保存后重啟MySQL。secure-file-priv=''【實例
16-6】使用SELECT…INTOOUTFILE語句將company數(shù)據(jù)庫中tb_department表中的記錄導(dǎo)出到文本文件,使用FIELDS和LINES子句,要求字段之間使用逗號間隔,所有字段值用雙引號括起來,定義轉(zhuǎn)義字符為單引號。登錄MySQL并執(zhí)行SELECTINTO…OUTFILE語句。SQL語句及其執(zhí)行結(jié)果如下:mysql>SELECT*FROMcompany.tb_departmentINTOOUTFILE"D:/backupdata/tb_department1.txt"->FIELDS->TERMINATEDBY','->ENCLOSEDBY'\"'->ESCAPEDBY'\''->LINES->TERMINATEDBY'\r\n';QueryOK,4rowsaffected(0.05sec)打開D:/backupdata目錄,可以看到生成的文本文件tb_department1.txt,打開文件?【教師】組織學(xué)生掃碼觀看“導(dǎo)出的文本文件”視頻(詳見教材),讓學(xué)生對相關(guān)知識有一個大致了解上述語句中,F(xiàn)IELDSTERMINATEDBY','表示字段之間用逗號分隔;FIELDSENCLOSEDBY'\"'表示每個字段用雙引號括起來;FIELDSESCAPEDBY'\''表示將系統(tǒng)默認(rèn)的轉(zhuǎn)義字符替換為單引號;LINESTERMINATEDBY'\r\n'表示每行以回車換行符結(jié)尾,保證每條記錄占一行。16.4.2使用mysqldump導(dǎo)出文本文件使用mysqldump不僅可以將數(shù)據(jù)庫備份為包含CREATE和INSERT語句的sql文件,還可以將其導(dǎo)出為純文本文件。使用mysqldump導(dǎo)出文本文件的基本語法格式如下:mysqldump-Tpath-uusername-pdb_name[tb_name][OPTIONS]執(zhí)行上述語句將會創(chuàng)建一個包含CREATE語句的sql文件,和一個包含表數(shù)據(jù)的txt文件。只有指定-T參數(shù)才可以導(dǎo)出純文本文件;path表示導(dǎo)出數(shù)據(jù)的目錄;tb_name指定要導(dǎo)出的表名,如果不指定,將導(dǎo)出數(shù)據(jù)庫db_name中的所有表;OPTIONS為可選參數(shù),其常見值及意義如下:--fields-terminated-by=value:設(shè)置字段之間的分隔字符,可以為單個或多個字符,默認(rèn)為制表符\t。--fields-enclosed-by=value:設(shè)置包裹文件中字段的符號。--fields-optionally-enclosed-by=value:設(shè)置包裹文件中字段的符號,只能為單個字符,且只能包括CHAR和VARCHAR等字符數(shù)據(jù)字段。--fields-escaped-by=value:控制如何寫入或讀取特殊字符,實際就是設(shè)置轉(zhuǎn)義字符,默認(rèn)為反斜線\。--lines-terminated-by=value:設(shè)置每行數(shù)據(jù)的結(jié)尾字符,可以為單個或多個字符,默認(rèn)值為\n?!咎崾尽炕旧弦陨厦總€選項都跟SELECT…INTOOUTFILE語句中的OPTIONS參數(shù)設(shè)置相同。不同的是,等號后面的value值不要用引號引起來?!緦嵗?6-7】使用mysqldump命令將company數(shù)據(jù)庫中tb_worker表中的記錄導(dǎo)出到文本文件,使用FIELDS和LINES選項,要求字段之間使用逗號間隔,所有字符類型字段值用雙引號括起來,定義轉(zhuǎn)義字符為問號?,每行記錄以回車換行符\r\n結(jié)尾。打開命令窗口,執(zhí)行以下mysqldump命令:mysqldump-TD:/backupdatacompanytb_worker-uroot-p--fields-terminated-by=,--fields-optionally-enclosed-by=\"--fields-escaped-by=?--lines-terminated-by=\r\n上述命令要在一行中輸入,命令執(zhí)行成功后,D:/backupdata目錄下將會生成兩個文件:tb_worker.sql和tb_worker.txt。打開tb_worker.txt文件?【教師】組織學(xué)生掃碼觀看“導(dǎo)出的文本文件”視頻(詳見教材),讓學(xué)生對相關(guān)知識有一個大致了解可以看出,只有字符類型的值被雙引號括了起來;記錄中的?N表示NULL值,使用問號代替了系統(tǒng)默認(rèn)的反斜線轉(zhuǎn)義字符。默認(rèn)情況下,如果遇到NULL值,將會返回\N代表空值。16.4.3使用mysql命令導(dǎo)出文本文件使用mysql命令可以在命令行模式下執(zhí)行SQL指令,將查詢結(jié)果導(dǎo)出到文本文件中。相比mysqldump,mysql命令導(dǎo)出的結(jié)果可讀性更強。其基本格式如下:mysql-uroot-p--execute="SELECT語句"dbname>filename.txt--execute表示執(zhí)行后面的語句并退出,其后的語句必須用雙引號引起來,dbname為要導(dǎo)出的數(shù)據(jù)庫名,導(dǎo)出的文件中不同列之間使用制表符分隔,第一行包含各字段名稱?!緦嵗?/p>
16-8】使用mysql命令,導(dǎo)出company數(shù)據(jù)庫的tb_department表記錄到文本文件。打開命令窗口后,執(zhí)行以下語句:mysql-uroot-p--execute="SELECT*FROMtb_department;"company>D:\backupdata\tb_department2.txt執(zhí)行完畢后,系統(tǒng)D:\backupdata目錄下將會生成文本文件tb_department2.txt。打開文件?【教師】組織學(xué)生掃碼觀看“打開導(dǎo)出的文本文件”視頻(詳見教材),讓學(xué)生對相關(guān)知識有一個大致了解可以看出,tb_department2.txt文件中包含了每個字段名和各條記錄。使用mysql命令還可以指定查詢結(jié)果的顯示格式,如果某行記錄字段很多,可能一行不能完全顯示,此時可以使用--vertical參數(shù),將每條記錄分為多行顯示?!緦嵗?6-9】使用mysql命令導(dǎo)出company數(shù)據(jù)庫中的tb_department表,使用--vertical參數(shù)將每條記錄分為多行顯示。打開命令窗口后,執(zhí)行以下語句:mysql-uroot-p--vertical--execute="SELECT*FROMtb_department;"company>D:\backupdata\tb_department3.txt執(zhí)行完畢后,系統(tǒng)D:\backupdata目錄下將會生成文本文件tb_department3.txt。打開文件?【教師】組織學(xué)生掃碼觀看“打開導(dǎo)出的文本文件”視頻(詳見教材),讓學(xué)生對相關(guān)知識有一個大致了解如果表中記錄的內(nèi)容太多,這樣顯示會更容易閱讀。另外,使用mysql命令還可以將表記錄導(dǎo)出為html或xml文件,只需要將實例16-9執(zhí)行語句中的--vertical換成--html或--xml,并把后面的文件擴展名改為相應(yīng)的html或xml即可。例如,要將tb_department表記錄導(dǎo)出為html格式文件,可執(zhí)行以下語句:mysql-uroot-p--html--execute="SELECT*FROMtb_department;"company>D:\backupdata\tb_department4.html16.4.4使用LOADDATAINFILE導(dǎo)入文本文件MySQL允許將表數(shù)據(jù)導(dǎo)出到外部文件,也可以從外部文件導(dǎo)入數(shù)據(jù)。使用LOADDATAINFILE語句可以高速地從一個文本文件中讀取行,并裝入表中。文件名必須為文字字符串?;菊Z法形式如下:LOADDATAINFILE'file_name.txt'INTOTABLEtb_name[OPTIONS][IGNOREnumberLINES]上述語句中,file_name.txt為導(dǎo)入數(shù)據(jù)的來源;tb_name為要導(dǎo)入數(shù)據(jù)的數(shù)據(jù)表的名稱,OPTIONS為可選參數(shù)選項,[OPTIONS]部分的語法包括FIELDS和LINES子句,其可能的取值為:FIELDSTERMINATEDBY'value'FIELDS[OPTIONALLY]ENCLOSEDBY'value'FIELDSESCAPEDBY'value'LINESSTARTINGBY'value'LINESTERMINATEDBY'value'這些參數(shù)及其意義跟SELECT…INTOOUTFILE語句中的參數(shù)一樣,此處不再贅述。[IGNOREnumberLINES]選項表示忽略文件開始處的行數(shù),number表示忽略的行數(shù)。【實例16-10】使用LOADDATAINFILE語句將D:/backupdata/tb_department.txt文件中的數(shù)據(jù)導(dǎo)入company數(shù)據(jù)庫中的tb_department表中。步驟
1登錄MySQL,并選擇company數(shù)據(jù)庫,將tb_department表中的數(shù)據(jù)全部刪除。執(zhí)行的語句及其結(jié)果如下:mysql>USEcompany;Databasechangedmysql>DELETEFROMtb_department;QueryOK,4rowsaffected(0.18sec)步驟2執(zhí)行LOADDATAINFILE語句導(dǎo)入數(shù)據(jù),執(zhí)行的語句及其結(jié)果如下:mysql>LOADDATAINFILE'D:/backupdata/tb_department.txt'INTOTABLEtb_department;QueryOK,4rowsaffected(0.12sec)Records:4Deleted:0Skipped:0Warnings:0步驟
3執(zhí)行SQL查詢語句,查看tb_department表中數(shù)據(jù),結(jié)果如下:mysql>SELECT*FROMtb_department;+++++|id|d_name|manager|work_num|+++++|1|人事部|馬莉|5||2|財務(wù)部|李超|3||3|技術(shù)部|劉浩|10||4|銷售部|趙寧|8|+++++4rowsinset(0.00sec)由執(zhí)行結(jié)果可以看出,原來的數(shù)據(jù)重新恢復(fù)到了tb_department表中?!緦嵗?6-11】使用LOADDATAINFILE語句將D:/backupdata/tb_department1.txt文件中的數(shù)據(jù)導(dǎo)入company數(shù)據(jù)庫中的tb_department表中,使用FIELDS和LINES子句,要求字段之間使用逗號間隔,所有字段值用雙引號引起來,定義轉(zhuǎn)義字符為單引號。首先參照實例16-10將tb_department表中的數(shù)據(jù)全部刪除,然后執(zhí)行LOADDATAINFILE語句將D:/backupdata/tb_department1.txt文件中的數(shù)據(jù)導(dǎo)入company數(shù)據(jù)庫中的tb_department表中。語句及其執(zhí)行結(jié)果如下:mysql>LOADDATAINFILE'D:/backupdata/tb_department1.txt'INTOTABLEtb_departmentFIELDSTERMINATEDBY','ENCLOSEDBY'\"'ESCAPEDBY'\''LINESTERMINATEDBY'\r\n';QueryOK,4rowsaffected(0.06sec)Records:4Deleted:0Skipped:0Warnings:0執(zhí)行成功后,使用SELECT語句查看tb_department表,結(jié)果與實例16-10相同。16.4.5使用mysqlimport導(dǎo)入文本文件mysqlimport命令提供了許多與LOADDATAINFILE語句相同的功能。其基本語法格式如下:mysqlimport-uroot-pdbnamefile_name.txt[OPTIONS]上述語句中,dbname為要導(dǎo)入數(shù)據(jù)的表所在的數(shù)據(jù)庫名,file_name.txt為要導(dǎo)入的文件,OPTIONS為可選參數(shù),其常見取值與mysqldump中的OPTIONS相同,此處不再贅述。不同的是,--ignore-lines=n表示忽略數(shù)據(jù)文件的前n行。【提示】mysqlimport命令不指定預(yù)導(dǎo)入數(shù)據(jù)的表名,數(shù)據(jù)表名由導(dǎo)入文件的名稱確定,導(dǎo)入數(shù)據(jù)之前該表必須存在?!?/p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 船舶管道安裝施工合同
- 國際展覽中心隔墻施工合同
- 娛樂機構(gòu)外來顧客管理辦法
- 旅游服務(wù)提升招議標(biāo)管理辦法試行
- 環(huán)保項目招投標(biāo)授權(quán)委托書
- 建筑聲學(xué)浮動價施工合同
- 商標(biāo)轉(zhuǎn)讓保證金協(xié)議書
- 公共交通加油補貼條例
- 家居建材商務(wù)樓租賃合同
- 租賃合同:公共安全設(shè)備
- 生涯發(fā)展展示
- 機能實驗考核細(xì)則
- 抗浮錨桿防水施工方案
- 高中物理學(xué)考試卷
- 標(biāo)準(zhǔn)時間設(shè)定焊裝
- 年產(chǎn)10萬噸電解銅的銅電解車間設(shè)計
- 三字經(jīng)全文帶拼音完整版打印版86222
- 自由基溶液聚合工藝——丙烯腈的溶液聚合
- 附件1-江西省病原微生物實驗室備案登記表.doc-附件1
- 陶瓷工藝學(xué)4陶瓷成型
- D702-1~3 常用低壓配電設(shè)備及燈具安裝(2004年合訂本)_(高清版)
評論
0/150
提交評論