LOAD DATA INFILE語句從一個文本文件中以很高的速度讀入一個表中。
1、基本語法
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,...]]2、參數說明
OW_PRIORITY:如果你指定關鍵詞low_priority,那麼MySQL將會等到沒有其他人讀這個表的時候,才把插入數據。案例:
load data low_priority infile "/home/mark/data sql" into table Orders;LOCAL:如果指定local關鍵詞,則表明從客戶主機讀文件。如果local沒指定,文件必須位於服務器上。
CONCURRENT:則當LOAD DATA 正在執行時,其它線程會從表中重新獲取數據。即使沒有其它線程在同時使用本表格,使用本選項也會略微影響LOAD DATA 的性能。
EPLACE 和IGNORE :關鍵字處理那些與已存在的主鍵值重復的輸入記錄。如果指定了REPLACE,輸入行將會代替已存在的行(也就是說,主索引值相同的行將作為存在的行)。參考REPLACE 語法 。如果指定了IGNORE,與已存在行主鍵值重復的輸入行將被跳過。如果不指定二者中的任一個,則操作行為將依賴是否指定了LOCAL 關鍵字。沒有指定LOCAL,則如果發現有重復的鍵值,將產生一個錯誤,並忽略文本文件的其余部分。
FIELDS:指定了文件記段的分割格式,如果用到這個關鍵字。
terminated by:意思是以什麼字符作為分隔符,默認情況下是tab字符(\t),例如:TERMINATED BY '\t'
enclosed by:字段結束符號。
escaped by:字段開始符號,默認的是反斜槓 (backslash:\ ),例如:ESCAPED BY '\\'。
Load Data InFile 'C:/Data.txt' Into Table `TableTest` Fields Terminated By ',' Enclosed By '"' Escaped By '"' Lines Terminated By '\r\n';Fields Terminated By ',' Enclosed By '"' Escaped By '"'
Lines Terminated By '\r\n';
表示每條數據用換行符分開
LINES TERMINATED:指定了每條記錄的分隔符,默認為'\n'為換行符。
IGNORE number LINES:這個選項可以用來忽略文件開頭部分的行。例如,可以用IGNORE 1 LINES 來跳過含有列名的的頭一行:
LOAD DATA INFILE '/tmp/test.txt' INTO TABLE test IGNORE 1 LINES;
col_name_or_user_var:表示數據表字段:
SET col_name = expr:提供不是來源於輸入文件的值。
LOAD DATA INFILE 'file.txt' INTO TABLE t1 (column1, column2) SET column3 = CURRENT_TIMESTAMP;3、其他說明