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

mysql LOAD語句批量錄入數據

編輯:MySQL綜合教程

mysql LOAD語句批量錄入數據。本站提示廣大學習愛好者:(mysql LOAD語句批量錄入數據)文章只能為提供參考,不一定能成為您想要的結果。以下是mysql LOAD語句批量錄入數據正文


榮幸的是,MySQL供給了一些辦法用於批量錄入數據,使得向表中添加數據變得輕易了。本節和下一節,將引見這些辦法。本節將引見SQL說話級的處理辦法。

1、根本語法

語法:LOAD DATA [LOCAL] INFILE 'file_name.txt' [REPLACE | IGNORE] INTO TABLE tbl_name LOAD DATA INFILE語句從一個文本文件中以很高的速度讀入一個表中。假如指定LOCAL症結詞,從客戶主機讀文件。假如LOCAL沒指定,文件必需位於辦事器上。(LOCAL在MySQL3.22.6或今後版本中可用。)

為了平安緣由,當讀取位於辦事器上的文本文件時,文件必需處於數據庫目次或可被一切人讀取。別的,為了對辦事器上文件應用LOAD DATA INFILE,在辦事器主機上你必需有file的權限。見第七章 數據庫平安。

REPLACE和IGNORE症結詞掌握對現有的獨一鍵記載的反復的處置。假如你指定REPLACE,新即將取代有雷同的獨一鍵值的現有行。假如你指定IGNORE,跳過有獨一鍵的現有行的反復行的輸出。假如你不指定任何一個選項,當找到反復鍵鍵時,湧現一個毛病,而且文本文件的余下部門被疏忽時。

假如你應用LOCAL症結詞從一個當地文件裝載數據,辦事器沒有方法在操作確當中停滯文件的傳輸,是以缺省的行動似乎IGNORE被指定一樣。

2、文件的搜索准繩

當在辦事器主機上尋覓文件時,辦事器應用以下規矩:

假如給出一個相對途徑名,辦事器應用該途徑名。

假如給出一個有一個或多個前置部件的絕對途徑名,辦事器絕對辦事器的數據目次搜刮文件。

假如給出一個沒有前置部件的一個文件名,辦事器在以後數據庫的數據庫目次尋覓文件。

留意這些規矩意味著一個像“./myfile.txt”給出的文件是從辦事器的數據目次讀取,而作為“myfile.txt”給出的一個文件是從以後數據庫的數據庫目次下讀取。也要留意,關於以下哪些語句,對db1文件從數據庫目次讀取,而不是db2:

mysql> USE db1;
mysql> LOAD DATA INFILE "./data.txt" INTO TABLE db2.my_table;

3、FIELDS和LINES子句的語法

假如你指定一個FIELDS子句,它的每個子句(TERMINATED BY, [OPTIONALLY] ENCLOSED BY和ESCAPED BY)也是可選的,除你必需至多指定他們之一。

假如你不指定一個FIELDS子句,缺省值與假如你如許寫的雷同:

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

假如你不指定一個LINES子句,缺省值與假如你如許寫的雷同:

LINES TERMINATED BY '\n'

換句話說,缺省值招致讀取輸出時,LOAD DATA INFILE表示以下:

在換行符處尋覓行界限

在定位符處將行分進字段

不要希冀字段由任何引號字符封裝

將由“\”開首的定位符、換行符或“\”說明是字段值的部門字面字符

LOAD DATA INFILE能被用來讀取從內部起源取得的文件。例如,以dBASE格局的文件將有由逗號分隔並用雙引號包抄的字段。假如文件中的行由換行符終止,上面顯示的敕令解釋你將用來裝載文件的字段和行處置選項:

mysql> LOAD DATA INFILE 'data.txt' INTO TABLE tbl_name

FIELDS TERMINATED BY ',' ENCLOSED BY '"'

LINES TERMINATED BY '\n';

任何字段或行處置選項可以指定一個空字符串('')。假如不是空,FIELDS [OPTIONALLY] ENCLOSED BY和FIELDS ESCAPED BY值必需是一個單個字符。FIELDS TERMINATED BY和LINES TERMINATED BY值可所以跨越一個字符。例如,寫入由回車換行符對(CR+LF)終止的行,或讀取包括如許行的一個文件,指定一個LINES TERMINATED BY '\r\n'子句。

FIELDS [OPTIONALLY] ENCLOSED BY掌握字段的包抄字符。關於輸入(SELECT ... INTO OUTFILE),假如你省略OPTIONALLY,一切的字段由ENCLOSED BY字符包抄。關於如許的輸入的一個例子(應用一個逗號作為字段分隔符)顯示鄙人面:

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

"2","a string containing a , comma","102.20"

"3","a string containing a \" quote","102.20"

"4","a string containing a \", quote and comma","102.20"

假如你指定OPTIONALLY,ENCLOSED BY字符僅被用於包抄CHAR和VARCHAR字段:

1,"a string",100.20

2,"a string containing a , comma",102.20

3,"a string containing a \" quote",102.20

4,"a string containing a \", quote and comma",102.20

留意,一個字段值中的ENCLOSED BY字符的湧現經由過程用ESCAPED BY字符作為其前綴來本義。也要留意,假如你指定一個空ESCAPED BY值,能夠發生不克不及被LOAD DATA INFILE准確讀出的輸入。例如,假如本義字符為空,下面顯示的輸入顯示以下。留意到在第四行的第二個字段包括追隨引號的一個逗號,它(毛病地)好象要終止字段:

1,"a string",100.20

2,"a string containing a , comma",102.20

3,"a string containing a " quote",102.20

4,"a string containing a ", quote and comma",102.20

FIELDS ESCAPED BY掌握若何寫入或讀出特別字符。假如FIELDS ESCAPED BY字符不是空的,它被用於前綴在輸入上的以下字符:

FIELDS ESCAPED BY字符

FIELDS [OPTIONALLY] ENCLOSED BY字符

FIELDS TERMINATED BY和LINES TERMINATED BY值的第一個字符

ASCII 0(現實大將後續本義字符寫成 ASCII'0',而不是一個零值字節)

假如FIELDS ESCAPED BY字符是空的,沒有字符被本義。指定一個空本義字符能夠不是一個好主張,特殊是假如在你數據中的字段值包括適才給出的表中的任何字符。

關於輸出,假如FIELDS ESCAPED BY字符不是空的,該字符的湧現被剝去而且後續字符在字面上作為字段值的一個部門。破例是一個本義的“0”或“N”(即,\0或\N,假如本義字符是“\”)。這些序列被說明為ASCII 0(一個零值字節)和NULL。見上面關於NULL處置的規矩。

總結

為數據庫裝載數據是治理員的主要職責之一,正由於主要,所以MySQL供給的辦法也長短常單一。個中重要的在本節曾經羅列:

1、應用INSERT、REPLACE語句

2、應用INSERT/REPLACE…SELECT語句

3、應用LOAD DATA INFILE語句

4、應用適用法式mysqlimport

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