資源描述:
《REPLACE句法》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、REPLACE句法REPLACE[LOW_PRIORITY
2、DELAYED][INTO]tbl_name[(col_name,...)]VALUES(expression,...)或REPLACE[LOW_PRIORITY
3、DELAYED][INTO]tbl_name[(col_name,...)]SELECT...或REPLACE[LOW_PRIORITY
4、DELAYED][INTO]tbl_nameSETcol_name=expression,col_name=expression,...REPLACE功能與INSERT完
5、全一樣,除了如果在表中的一個老記錄具有在一個唯一索引上的新記錄有相同的值,在新記錄被插入之前,老記錄被刪除。見7.14INSERT句法。LOADDATAINFILE句法LOADDATA[LOW_PRIORITY][LOCAL]INFILE'file_name.txt'[REPLACE
6、IGNORE]INTOTABLEtbl_name[FIELDS[TERMINATEDBY't'][OPTIONALLY]ENCLOSEDBY''][ESCAPEDBY'\']][LINESTERMINATEDBY''][IGNOREnum
7、berLINES][(col_name,...)]LOADDATAINFILE語句從一個文本文件中以很高的速度讀入一個表中。如果指定LOCAL關(guān)鍵詞,從客戶主機(jī)讀文件。如果LOCAL沒指定,文件必須位于服務(wù)器上。為了安全原因,當(dāng)讀取位于服務(wù)器上的文本文件時,文件必須處于數(shù)據(jù)庫目錄或可被所有人讀取。另外,為了對服務(wù)器上文件使用LOADDATAINFILE,在服務(wù)器主機(jī)上你必須有file的權(quán)限。見6.5由MySQL提供的權(quán)限。如果你指定關(guān)鍵詞LOW_PRIORITY,LOADDATA語句的執(zhí)行被推遲到?jīng)]有其他客戶讀取表后。使用LO
8、CAL將比讓服務(wù)器直接存取文件慢些,因?yàn)槲募膬?nèi)容必須從客戶主機(jī)傳送到服務(wù)器主機(jī)。在另一方面,你不需要file權(quán)限裝載本地文件。你也可以使用mysqlimport實(shí)用程序裝載數(shù)據(jù)文件;它由發(fā)送一個LOADDATAINFILE命令到服務(wù)器來運(yùn)作。--local選項(xiàng)使得mysqlimport從客戶主機(jī)上讀取數(shù)據(jù)。如果客戶和服務(wù)器支持壓縮協(xié)議,你能指定--compress在較慢的網(wǎng)絡(luò)上獲得更好的性能。當(dāng)在服務(wù)器主機(jī)上尋找文件時,服務(wù)器使用下列規(guī)則:·如果給出一個絕對路徑名,服務(wù)器使用該路徑名?!と绻o出一個有一個或多個前置部件的相對
9、路徑名,服務(wù)器相對服務(wù)器的數(shù)據(jù)目錄搜索文件。·如果給出一個沒有前置部件的一個文件名,服務(wù)器在當(dāng)前數(shù)據(jù)庫的數(shù)據(jù)庫目錄尋找文件。注意這些規(guī)則意味著一個像“./myfile.txt”給出的文件是從服務(wù)器的數(shù)據(jù)目錄讀取,而作為“myfile.txt”給出的一個文件是從當(dāng)前數(shù)據(jù)庫的數(shù)據(jù)庫目錄下讀取。也要注意,對于下列哪些語句,對db1文件從數(shù)據(jù)庫目錄讀取,而不是db2:mysql>USEdb1;mysql>LOADDATAINFILE"./data.txt"INTOTABLEdb2.my_table;REPLACE和IGNORE關(guān)鍵詞控
10、制對現(xiàn)有的唯一鍵記錄的重復(fù)的處理。如果你指定REPLACE,新行將代替有相同的唯一鍵值的現(xiàn)有行。如果你指定IGNORE,跳過有唯一鍵的現(xiàn)有行的重復(fù)行的輸入。如果你不指定任何一個選項(xiàng),當(dāng)找到重復(fù)鍵鍵時,出現(xiàn)一個錯誤,并且文本文件的余下部分被忽略時。如果你使用LOCAL關(guān)鍵詞從一個本地文件裝載數(shù)據(jù),服務(wù)器沒有辦法在操作的當(dāng)中停止文件的傳輸,因此缺省的行為好像IGNORE被指定一樣。LOADDATAINFILE是SELECT...INTOOUTFILE的逆操作,見7.12SELECT句法。為了將一個數(shù)據(jù)庫的數(shù)據(jù)寫入一個文件,使用SE
11、LECT...INTOOUTFILE,為了將文件讀回數(shù)據(jù)庫,使用LOADDATAINFILE。兩個命令的FIELDS和LINES子句的語法是相同的。兩個子句是可選的,但是如果指定兩個,F(xiàn)IELDS必須在LINES之前。如果你指定一個FIELDS子句,它的每一個子句(TERMINATEDBY,[OPTIONALLY]ENCLOSEDBY和ESCAPEDBY)也是可選的,除了你必須至少指定他們之一。如果你不指定一個FIELDS子句,缺省值與如果你這樣寫的相同:FIELDSTERMINATEDBY't'ENCLOSEDBY''ES
12、CAPEDBY'\'如果你不指定一個LINES子句,缺省值與如果你這樣寫的相同:LINESTERMINATEDBY''換句話說,缺省值導(dǎo)致讀取輸入時,LOADDATAINFILE表現(xiàn)如下:·在換行符處尋找行邊界·在定位符處將行分進(jìn)字段·不要期望字段由任何引號字符封裝·將