《MYSQL數據庫mysql load語句的用法詳解》要點:
本文介紹了MYSQL數據庫mysql load語句的用法詳解,希望對您有用。如果有疑問,可以聯系我們。
MYSQL必讀本節內容:
mysql數據庫的load語法
MYSQL必讀一,load語法結構
?
MYSQL必讀LOAD DATA INFILE語句用于高速地從一個文本文件中讀取行,并裝入一個表中.文件名稱必須為一個文字字符串.
MYSQL必讀由character_set_database系統變量指示的字符集被用于解釋文件中的信息.SET NAMES和character_set_client的設置不會影響對輸入的解釋.
MYSQL必讀例子:
?
MYSQL必讀如果只想載入一個表的部分列,則應指定一個列清單:
?
MYSQL必讀二,文件的路徑
如果指定了LOCAL,則被認為與連接的客戶端有關:
MYSQL必讀?如果指定了LOCAL,則文件會被客戶主機上的客戶端讀取,并被發送到服務器.文件會被給予一個完整的路徑名稱,以指定確切的位置.如果給定的是一個相對的路徑名稱,則此名稱會被理解為相對于啟動客戶端時所在的目錄.
?如果LOCAL沒有被指定,則文件必須位于服務器主機上,并且被服務器直接讀取.
MYSQL必讀當在服務器主機上為文件定位時,服務器使用以下規則:
如果給定了一個絕對的路徑名稱,則服務器使用此路徑名稱.
如果給定了帶有一個或多個引導組件的相對路徑名稱,則服務器會搜索相對于服務器數據目錄的文件.
如果給定了一個不帶引導組件的文件名稱,則服務器會在默認數據庫的數據庫目錄中尋找文件.
MYSQL必讀注意,這些規則意味著名為./myfile.txt的文件會從服務器數據目錄中被讀取,而名為myfile.txt的同樣的文件會從默認數據庫的數據庫目錄中讀取.
MYSQL必讀三,從客戶端使用絕對路徑load數據
?
MYSQL必讀四,從服務器里使用相對路徑load數據
以下LOAD DATA語句會從db1數據庫目錄中讀取文件data.txt,因為db1是當前數據庫.
即使語句明確把文件載入到db2數據庫中的表里,也會從db1目錄中讀取.
MYSQL必讀例子:
?
MYSQL必讀五,IGNORE number LINES選項
IGNORE number LINES選項可以被用于在文件的開始處忽略行.
MYSQL必讀可以使用IGNORE 1 LINES來跳過一個包含列名稱的起始標題行:
LOAD DATA INFILE '/tmp/test.txt'? INTO TABLE test IGNORE 1 LINES;
?
六,REPLACE和IGNORE
有些輸入記錄把原有的記錄復制到唯一關鍵字值上.REPLACE和IGNORE關鍵字用于控制這些輸入記錄的操作.
MYSQL必讀如果指定了REPLACE,則輸入行會替換原有行(換句話說,與原有行一樣,對一個主索引或唯一索引具有相同值的行).
MYSQL必讀如果指定IGNORE,則把原有行復制到唯一關鍵字值的輸入行被跳過.
MYSQL必讀如果這兩個選項都不指定,則運行情況根據LOCAL關鍵詞是否被指定而定.不使用LOCAL時,當出現重復關鍵字值時,會發生錯誤,并且剩下的文本文件被忽略.使用LOCAL時,默認的運行情況和IGNORE被指定時的情況相同;這是因為在運行中間,服務器沒有方法中止文件的傳輸.
MYSQL必讀七,索引的影響
如果對一個空的MyISAM表使用LOAD DATA INFILE,則所有的非唯一索引會被創建在一個獨立批中(對于REPAIR TABLE).
MYSQL必讀當有許多索引時,這通常會使LOAD DATA INFILE大大加快.通常,LOAD DATA INFILE的速度會非常快,但是在某些極端情況下,可以在把文件載入到表中之前使用ALTER TABLE...DISABLE KEYS關閉LOAD DATA INFILE,或者在載入文件之后使用ALTER TABLE...ENABLE KEYS再次創建索引,使創建索引的速度更快.
MYSQL必讀八,FIELDS和LINES的默認值
如果不指定FIELDS子句,則默認值為假設寫下如下語句時的值:
?
MYSQL必讀如果不指定LINES子句,則默認值為假設寫下如下語句時的值:
?
MYSQL必讀換句話說,當讀取輸入值時,默認值會使LOAD DATA INFILE按如下方式運行:
1,在新行處尋找行的邊界.
2,不會跳過任何行前綴.
3,在制表符處把行分解為字段.
4,不希望字段被包含在任何引號字符之中.
5,出現制表符、新行、或在‘’前有‘’時,理解為作為字段值一部分的文字字符.
6,相反的,當編寫輸出值時,默認值會使SELECT...INTO OUTFILE按如下方式運行:
MYSQL必讀在字段之間寫入制表符.
不把字段包含在任何引號字符中.
當字段值中出現制表符、新行或‘’時,使用‘’進行轉義.
在行的末端寫入新行.
注意,要寫入FIELDS ESCAPED BY ‘\’,必須為待讀取的值指定兩個反斜杠,作為一個單反斜杠使用.
MYSQL必讀備注:如果已經在Windows系統中生成了文本文件,可能必須使用LINES TERMINATED BY ‘rn’來正確地讀取文件,因為Windows程序通常使用兩個字符作為一個行終止符.部分程序,當編寫文件時,可能會使用r作為行終止符.要讀取這樣的文件,應使用LINES TERMINATED BY ‘r’.
MYSQL必讀九,STARTING? LINES選項
如果所有希望讀入的行都含有一個希望忽略的共用前綴,則可以使用'prefix_string'來跳過前綴(和前綴前的字符).如果某行不包括前綴,則整個行被跳過.注釋:prefix_string會出現在一行的中間.
MYSQL必讀以下面的test.txt為文件源
?
MYSQL必讀使用以下sql導入數據:
?
MYSQL必讀最后并只得到數據("row",1)和("row",2).
MYSQL必讀十一,TERMINATED LINES選項
如果jokes被由%%組成的行分隔,要讀取包含jokes的文件,可以這么操作:
?
MYSQL必讀十二,TERMINATED,ENCLOSED,ESCAPED FIELD選項
TERMINATED用于控制字段的分隔符,可以為多個字符.
MYSQL必讀ENCLOSED BY用于用于控制字段的引號,必須為單一字符,如果忽略了詞語OPTIONALLY,則所有的字段都被包含在ENCLOSED BY字符串中,如果指定了OPTINALLY,則ENCLOSED BY字符只被用于包含具有字符串數據類型(比如CHAR, BINARY, TEXT或ENUM)的列中的值.
MYSQL必讀SELECT...INTO OUTFILE導出數據,ENCLOSED BY '"',忽略OPTIONALLY
MYSQL必讀"1","a string","100.20"
SELECT...INTO OUTFILE導出數據,ENCLOSED BY '"',指定OPTIONALLY
MYSQL必讀1,"a string",100.20
ESCAPED BY用于轉義,FIELDS ESCAPED BY值必須為單一字符.
MYSQL必讀如果FIELDS ESCAPED BY字符為空字符,則沒有字符被轉義,并且NULL被作為NULL輸出,而不是N.去指定一個空的轉義符不是一個好方法,特別是如果數據的字段值包含任何剛給定的清單中的字符時,更不能這么做.
MYSQL必讀如果在字段值內出現ENCLOSED BY字符,則通過使用ESCAPED BY字符作為前綴,對ENCLOSED BY字符進行轉義.
MYSQL必讀以上為大家詳細介紹了mysql load語句的用法,希望對大家有所贊助.
歡迎參與《MYSQL數據庫mysql load語句的用法詳解》討論,分享您的想法,維易PHP學院為您提供專業教程。