程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL load語句具體引見

MySQL load語句具體引見

編輯:MySQL綜合教程

MySQL load語句具體引見。本站提示廣大學習愛好者:(MySQL load語句具體引見)文章只能為提供參考,不一定能成為您想要的結果。以下是MySQL load語句具體引見正文


load的語法


LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name.txt'
    [REPLACE | IGNORE]
    INTO TABLE tbl_name
    [FIELDS
        [TERMINATED BY 'string']
        [[OPTIONALLY] ENCLOSED BY 'char']
        [ESCAPED BY 'char' ]
    ]
    [LINES
        [STARTING BY 'string']
        [TERMINATED BY 'string']
    ]
    [IGNORE number LINES]
    [(col_name_or_user_var,...)]
    [SET col_name = expr,...)]

LOAD DATA INFILE語句用於高速地從一個文本文件中讀取行,並裝入一個表中。文件稱號必需為一個文字字符串。

由character_set_database體系變量指導的字符集被用於說明文件中的信息。SET NAMES和character_set_client的設置不會影響對輸出的說明。

典范的示例


LOAD DATA LOCAL INFILE 'data.txt' INTO TABLE tbl_name
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'

假如您只想載入一個表的部門列,則應指定一個列清單:


LOAD DATA LOCAL INFILE 'persondata.txt' INTO TABLE persondata (col1,col2);

文件的途徑

假如指定了LOCAL,則被以為與銜接的客戶端有關:

 1.假如指定了LOCAL,則文件會被客戶主機上的客戶端讀取,並被發送到辦事器。文件會被賜與一個完全的途徑稱號,以指定確實的地位。假如給定的是一個絕對的途徑稱號,則此稱號會被懂得為絕對於啟動客戶端時地點的目次。

 2.假如LOCAL沒有被指定,則文件必需位於辦事器主機上,而且被辦事器直接讀取。

當在辦事器主機上為文件定位時,辦事器應用以下規矩:

1).假如給定了一個相對的途徑稱號,則辦事器應用此途徑稱號。
2).假如給定了帶有一個或多個引誘組件的絕對途徑稱號,則辦事器會搜刮絕對於辦事器數據目次的文件。
3).假如給定了一個不帶引誘組件的文件稱號,則辦事器會在默許數據庫的數據庫目次中尋覓文件。

留意,這些規矩意味知名為./myfile.txt的文件會從辦事器數據目次中被讀取,而名為myfile.txt的異樣的文件會從默許數據庫的數據庫目次中讀取。

從客戶端應用相對途徑load數據


LOAD DATA LOCAL INFILE '/import/data.txt' INTO TABLE db2.my_table;

從辦事器裡應用絕對途徑load數據

上面的LOAD DATA語句會從db1數據庫目次中讀取文件data.txt,由於db1是以後數據庫。即便語句明白把文件載入到db2數據庫中的內外,也會從db1目次中讀取。


USE db1;
LOAD DATA INFILE 'data.txt' INTO TABLE db2.my_table;

IGNORE number LINES選項

IGNORE number LINES選項可以被用於在文件的開端處疏忽行。

您可使用IGNORE 1 LINES來跳過一個包括列稱號的肇端題目行:

LOAD DATA INFILE '/tmp/test.txt'  INTO TABLE test IGNORE 1 LINES;

REPLACE和IGNORE

有些輸出記載把原本的記載復制到獨一症結字值上。REPLACE和IGNORE症結字用於掌握這些輸出記載的操作。

假如您指定了REPLACE,則輸出行會調換原有行(換句話說,與原有行一樣,對一個主索引或獨一索引具有雷同值的行)。

假如您指定IGNORE,則把原有行復制到獨一症結字值的輸出行被跳過。

假如您這兩個選項都不指定,則運轉情形依據LOCAL症結詞能否被指定而定。不應用LOCAL時,當湧現反復症結字值時,會產生毛病,而且剩下的文本文件被疏忽。應用LOCAL時,默許的運轉情形和IGNORE被指准時的情形雷同;這是由於在運轉中央,辦事器沒有方法中斷文件的傳輸

索引的影響

假如您對一個空的MyISAM表應用LOAD DATA INFILE,則一切的非獨一索引會被創立在一個自力批中(關於REPAIR TABLE)。當您有很多索引時,這平日會使LOAD DATA INFILE年夜年夜加速。平日,LOAD DATA INFILE的速度會異常快,然則在某些極端情形下,您可以在把文件載入到表中之前應用ALTER TABLE...DISABLE KEYS封閉LOAD DATA INFILE,或許在載入文件以後應用ALTER TABLE...ENABLE KEYS再次創立索引,使創立索引的速度更快。

FIELDS和LINES的默許值

假如您不指定FIELDS子句,則默許值為假定您寫下以下語句時的值:


FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\'

假如您不指定LINES子句,則默許值為假定您寫下以下語句時的值:


LINES TERMINATED BY '\n' STARTING BY ''

換句話說,當讀取輸出值時,默許值會使LOAD DATA INFILE按以下方法運轉:


在新行處尋覓行的界限。
不會跳過任何行前綴。
在制表符處把行分化為字段。
不願望字段被包括在任何引號字符當中。
湧現制表符、新行、或在‘\'前有‘\'時,懂得為作為字段值一部門的文字字符。

相反的,當編寫輸入值時,默許值會使SELECT...INTO OUTFILE按以下方法運轉:


在字段之間寫入制表符。
不把字段包括在任何引號字符中。
當字段值中湧現制表符、新行或‘\'時,應用‘\'停止本義。
外行的末尾寫入新行。

留意,要寫入FIELDS ESCAPED BY ‘\\',您必需為待讀取的值指定兩個反斜槓,作為一個單反斜槓應用。

備注:假如您曾經在Windows體系中生成了文本文件,您能夠必需應用LINES TERMINATED BY ‘\r\n'來准確地讀取文件,由於Windows法式平日應用兩個字符作為一個行終止符。部門法式,當編寫文件時,能夠會應用\r作為行終止符。要讀取如許的文件,應應用LINES TERMINATED BY ‘\r'。

STARTING  LINES選項

假如一切您願望讀入的行都含有一個您願望疏忽的共用前綴,則您可使用'prefix_string'來跳過前綴(和前綴前的字符)。假如某行不包含前綴,則全部行被跳過。正文:prefix_string會湧現在一行的中央。

以上面的test.txt為文件源


xxx"row",1
something xxx"row",2

應用以下sql導入數據


LOAD DATA INFILE '/tmp/test.txt' INTO TABLE test LINES STARTING BY "xxx";

最初並只獲得數據("row",1)和("row",2)。

TERMINATED LINES選項

假如jokes被由%%構成的行分隔,要讀取包括jokes的文件,您可以這麼操作:


LOAD DATA INFILE '/tmp/jokes.txt' INTO TABLE jokes FIELDS TERMINATED BY '' LINES TERMINATED BY '\n%%\n' (joke);

TERMINATED,ENCLOSED,ESCAPED FIELD選項

TERMINATED用於掌握字段的分隔符,可認為多個字符。

ENCLOSED BY用於用於掌握字段的引號,必需為單一字符,假如您疏忽了詞語OPTIONALLY,則一切的字段都被包括在ENCLOSED BY字符串中,假如您指定了OPTINALLY,則ENCLOSED BY字符只被用於包括具有字符串數據類型(好比CHAR, BINARY, TEXT或ENUM)的列中的值.

SELECT...INTO OUTFILE導出數據,ENCLOSED BY '"',疏忽OPTIONALLY


"1","a string","100.20"

SELECT...INTO OUTFILE導出數據,ENCLOSED BY '"',指定OPTIONALLY


1,"a string",100.20

ESCAPED BY用於本義,FIELDS ESCAPED BY值必需為單一字符。

假如FIELDS ESCAPED BY字符為空字符,則沒有字符被本義,而且NULL被作為NULL輸入,而不是\N。去指定一個空的本義符不是一個好方法,特殊是假如數據的字段值包括任何剛給定的清單中的字符時,更不克不及這麼做。

假如在字段值內湧現ENCLOSED BY字符,則經由過程應用ESCAPED BY字符作為前綴,對ENCLOSED BY字符停止本義。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved