《Mysql必讀mysql LOAD語句批量錄入數據》要點:
本文介紹了Mysql必讀mysql LOAD語句批量錄入數據,希望對您有用。如果有疑問,可以聯系我們。
MYSQL應用1、基本語法
MYSQL應用語法:LOAD DATA [LOCAL] INFILE 'file_name.txt' [REPLACE | IGNORE] INTO TABLE tbl_name LOAD DATA INFILE語句從一個文本文件中以很高的速度讀入一個表中.如果指定LOCAL關鍵詞,從客戶主機讀文件.如果LOCAL沒指定,文件必需位于服務器上.(LOCAL在MySQL3.22.6或以后版本中可用.)
MYSQL應用為了平安原因,當讀取位于服務器上的文本文件時,文件必須處于數據庫目錄或可被所有人讀取.另外,為了對服務器上文件使用LOAD DATA INFILE,在服務器主機上你必須有file的權限.見第七章 數據庫平安.
MYSQL應用REPLACE和IGNORE關鍵詞控制對現有的唯一鍵記錄的重復的處理.如果你指定REPLACE,新行將代替有相同的唯一鍵值的現有行.如果你指定IGNORE,跳過有唯一鍵的現有行的重復行的輸入.如果你不指定任何一個選項,當找到重復鍵鍵時,出現一個錯誤,而且文本文件的余下部分被忽略時.
MYSQL應用如果你使用LOCAL關鍵詞從一個本地文件裝載數據,服務器沒有方法在操作的當中停止文件的傳輸,因此缺省的行為好像IGNORE被指定一樣.
MYSQL應用2、文件的搜尋原則
MYSQL應用當在服務器主機上尋找文件時,服務器使用下列規則:
MYSQL應用如果給出一個絕對路徑名,服務器使用該路徑名.
MYSQL應用如果給出一個有一個或多個前置部件的相對路徑名,服務器相對服務器的數據目錄搜索文件.
MYSQL應用如果給出一個沒有前置部件的一個文件名,服務器在當前數據庫的數據庫目錄尋找文件.
MYSQL應用注意這些規則意味著一個像“./myfile.txt”給出的文件是從服務器的數據目錄讀取,而作為“myfile.txt”給出的一個文件是從當前數據庫的數據庫目錄下讀取.也要注意,對于下列哪些語句,對db1文件從數據庫目錄讀取,而不是db2:
MYSQL應用mysql> USE db1;
mysql> LOAD DATA INFILE "./data.txt" INTO TABLE db2.my_table; |
MYSQL應用3、FIELDS和LINES子句的語法
MYSQL應用如果你指定一個FIELDS子句,它的每一個子句(TERMINATED BY, [OPTIONALLY] ENCLOSED BY和ESCAPED BY)也是可選的,除了你必需至少指定他們之一.
MYSQL應用如果你不指定一個FIELDS子句,缺省值與如果你這樣寫的相同:
MYSQL應用FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\'
MYSQL應用如果你不指定一個LINES子句,缺省值與如果你這樣寫的相同:
MYSQL應用LINES TERMINATED BY '\n'
MYSQL應用換句話說,缺省值導致讀取輸入時,LOAD DATA INFILE表示如下:
MYSQL應用在換行符處尋找行界限
MYSQL應用在定位符處將行分進字段
MYSQL應用不要期望字段由任何引號字符封裝
MYSQL應用將由“\”開頭的定位符、換行符或“\”解釋是字段值的部門字面字符
MYSQL應用LOAD DATA INFILE能被用來讀取從外部來源獲得的文件.例如,以dBASE格式的文件將有由逗號分隔并用雙引號包抄的字段.如果文件中的行由換行符終止,下面顯示的命令說明你將用來裝載文件的字段和行處理選項:
MYSQL應用mysql> LOAD DATA INFILE 'data.txt' INTO TABLE tbl_name
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\n'; |
MYSQL應用任何字段或行處理選項可以指定一個空字符串('').如果不是空,FIELDS [OPTIONALLY] ENCLOSED BY和FIELDS ESCAPED BY值必須是一個單個字符.FIELDS TERMINATED BY和LINES TERMINATED BY值可以是超過一個字符.例如,寫入由回車換行符對(CR+LF)終止的行,或讀取包括這樣行的一個文件,指定一個LINES TERMINATED BY '\r\n'子句.
MYSQL應用FIELDS [OPTIONALLY] ENCLOSED BY控制字段的包抄字符.對于輸出(SELECT ... INTO OUTFILE),如果你省略OPTIONALLY,所有的字段由ENCLOSED BY字符包抄.對于這樣的輸出的一個例子(使用一個逗號作為字段分隔符)顯示在下面:
MYSQL應用"1","a string","100.20"
MYSQL應用"2","a string containing a , comma","102.20"
MYSQL應用"3","a string containing a \" quote","102.20"
MYSQL應用"4","a string containing a \", quote and comma","102.20"
MYSQL應用如果你指定OPTIONALLY,ENCLOSED BY字符僅被用于包抄CHAR和VARCHAR字段:
MYSQL應用1,"a string",100.20
MYSQL應用2,"a string containing a , comma",102.20
MYSQL應用3,"a string containing a \" quote",102.20
MYSQL應用4,"a string containing a \", quote and comma",102.20
MYSQL應用注意,一個字段值中的ENCLOSED BY字符的出現通過用ESCAPED BY字符作為其前綴來轉義.也要注意,如果你指定一個空ESCAPED BY值,可能產生不能被LOAD DATA INFILE正確讀出的輸出.例如,如果轉義字符為空,上面顯示的輸出顯示如下.注意到在第四行的第二個字段包括跟隨引號的一個逗號,它(錯誤地)好象要終止字段:
MYSQL應用1,"a string",100.20
MYSQL應用2,"a string containing a , comma",102.20
MYSQL應用3,"a string containing a " quote",102.20
MYSQL應用4,"a string containing a ", quote and comma",102.20
MYSQL應用FIELDS ESCAPED BY控制如何寫入或讀出特殊字符.如果FIELDS ESCAPED BY字符不是空的,它被用于前綴在輸出上的下列字符:
MYSQL應用FIELDS ESCAPED BY字符
MYSQL應用FIELDS [OPTIONALLY] ENCLOSED BY字符
MYSQL應用FIELDS TERMINATED BY和LINES TERMINATED BY值的第一個字符
MYSQL應用ASCII 0(實際上將后續轉義字符寫成 ASCII'0',而不是一個零值字節)
MYSQL應用如果FIELDS ESCAPED BY字符是空的,沒有字符被轉義.指定一個空轉義字符可能不是一個好主意,特別是如果在你數據中的字段值包括剛才給出的表中的任何字符.
MYSQL應用對于輸入,如果FIELDS ESCAPED BY字符不是空的,該字符的出現被剝去而且后續字符在字面上作為字段值的一個部分.例外是一個轉義的“0”或“N”(即,\0或\N,如果轉義字符是“\”).這些序列被解釋為ASCII 0(一個零值字節)和NULL.見下面關于NULL處理的規則.
MYSQL應用總結
MYSQL應用為數據庫裝載數據是管理員的重要職責之一,正因為重要,所以MySQL提供的辦法也是非常繁多.其中主要的在本節已經列舉:
MYSQL應用1、使用INSERT、REPLACE語句
MYSQL應用2、使用INSERT/REPLACE…SELECT語句
MYSQL應用3、使用LOAD DATA INFILE語句
MYSQL應用4、使用實用法式mysqlimport
《Mysql必讀mysql LOAD語句批量錄入數據》是否對您有啟發,歡迎查看更多與《Mysql必讀mysql LOAD語句批量錄入數據》相關教程,學精學透。維易PHP學院為您提供精彩教程。