欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mysql LOAD語句批量錄入數(shù)據(jù)

 更新時(shí)間:2010年03月16日 23:26:33   作者:  
本章的前面討論如何使用SQL向一個表中插入數(shù)據(jù)。但是,如果你需要向一個表中添加許多條記錄,使用SQL語句輸入數(shù)據(jù)是很不方便的。
幸運(yùn)的是,MySQL提供了一些方法用于批量錄入數(shù)據(jù),使得向表中添加數(shù)據(jù)變得容易了。本節(jié)以及下一節(jié),將介紹這些方法。本節(jié)將介紹SQL語言級的解決方法。

1、基本語法

語法:LOAD DATA [LOCAL] INFILE 'file_name.txt' [REPLACE | IGNORE] INTO TABLE tbl_name LOAD DATA INFILE語句從一個文本文件中以很高的速度讀入一個表中。如果指定LOCAL關(guān)鍵詞,從客戶主機(jī)讀文件。如果LOCAL沒指定,文件必須位于服務(wù)器上。(LOCAL在MySQL3.22.6或以后版本中可用。)

為了安全原因,當(dāng)讀取位于服務(wù)器上的文本文件時(shí),文件必須處于數(shù)據(jù)庫目錄或可被所有人讀取。另外,為了對服務(wù)器上文件使用LOAD DATA INFILE,在服務(wù)器主機(jī)上你必須有file的權(quán)限。見第七章 數(shù)據(jù)庫安全。

REPLACE和IGNORE關(guān)鍵詞控制對現(xiàn)有的唯一鍵記錄的重復(fù)的處理。如果你指定REPLACE,新行將代替有相同的唯一鍵值的現(xiàn)有行。如果你指定IGNORE,跳過有唯一鍵的現(xiàn)有行的重復(fù)行的輸入。如果你不指定任何一個選項(xiàng),當(dāng)找到重復(fù)鍵鍵時(shí),出現(xiàn)一個錯誤,并且文本文件的余下部分被忽略時(shí)。

如果你使用LOCAL關(guān)鍵詞從一個本地文件裝載數(shù)據(jù),服務(wù)器沒有辦法在操作的當(dāng)中停止文件的傳輸,因此缺省的行為好像IGNORE被指定一樣。

2、文件的搜尋原則

當(dāng)在服務(wù)器主機(jī)上尋找文件時(shí),服務(wù)器使用下列規(guī)則:

如果給出一個絕對路徑名,服務(wù)器使用該路徑名。

如果給出一個有一個或多個前置部件的相對路徑名,服務(wù)器相對服務(wù)器的數(shù)據(jù)目錄搜索文件。

如果給出一個沒有前置部件的一個文件名,服務(wù)器在當(dāng)前數(shù)據(jù)庫的數(shù)據(jù)庫目錄尋找文件。

注意這些規(guī)則意味著一個像“./myfile.txt”給出的文件是從服務(wù)器的數(shù)據(jù)目錄讀取,而作為“myfile.txt”給出的一個文件是從當(dāng)前數(shù)據(jù)庫的數(shù)據(jù)庫目錄下讀取。也要注意,對于下列哪些語句,對db1文件從數(shù)據(jù)庫目錄讀取,而不是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'

換句話說,缺省值導(dǎo)致讀取輸入時(shí),LOAD DATA INFILE表現(xiàn)如下:

在換行符處尋找行邊界

在定位符處將行分進(jìn)字段

不要期望字段由任何引號字符封裝

將由“\”開頭的定位符、換行符或“\”解釋是字段值的部分字面字符

LOAD DATA INFILE能被用來讀取從外部來源獲得的文件。例如,以dBASE格式的文件將有由逗號分隔并用雙引號包圍的字段。如果文件中的行由換行符終止,下面顯示的命令說明你將用來裝載文件的字段和行處理選項(xiàng):

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

FIELDS TERMINATED BY ',' ENCLOSED BY '"'

LINES TERMINATED BY '\n';

任何字段或行處理選項(xiàng)可以指定一個空字符串('')。如果不是空,F(xiàn)IELDS [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),如果你省略O(shè)PTIONALLY,所有的字段由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字符的出現(xiàn)通過用ESCAPED BY字符作為其前綴來轉(zhuǎn)義。也要注意,如果你指定一個空ESCAPED BY值,可能產(chǎn)生不能被LOAD DATA INFILE正確讀出的輸出。例如,如果轉(zhuǎn)義字符為空,上面顯示的輸出顯示如下。注意到在第四行的第二個字段包含跟隨引號的一個逗號,它(錯誤地)好象要終止字段:

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(實(shí)際上將后續(xù)轉(zhuǎn)義字符寫成 ASCII'0',而不是一個零值字節(jié))

如果FIELDS ESCAPED BY字符是空的,沒有字符被轉(zhuǎn)義。指定一個空轉(zhuǎn)義字符可能不是一個好主意,特別是如果在你數(shù)據(jù)中的字段值包含剛才給出的表中的任何字符。

對于輸入,如果FIELDS ESCAPED BY字符不是空的,該字符的出現(xiàn)被剝?nèi)ゲ⑶液罄m(xù)字符在字面上作為字段值的一個部分。例外是一個轉(zhuǎn)義的“0”或“N”(即,\0或\N,如果轉(zhuǎn)義字符是“\”)。這些序列被解釋為ASCII 0(一個零值字節(jié))和NULL。見下面關(guān)于NULL處理的規(guī)則。

總結(jié)

為數(shù)據(jù)庫裝載數(shù)據(jù)是管理員的重要職責(zé)之一,正因?yàn)橹匾?,所以MySQL提供的方法也是非常繁多。其中主要的在本節(jié)已經(jīng)列舉:

1、使用INSERT、REPLACE語句

2、使用INSERT/REPLACE…SELECT語句

3、使用LOAD DATA INFILE語句

4、使用實(shí)用程序mysqlimport

相關(guān)文章

  • MySQL創(chuàng)建數(shù)據(jù)庫和創(chuàng)建數(shù)據(jù)表

    MySQL創(chuàng)建數(shù)據(jù)庫和創(chuàng)建數(shù)據(jù)表

    MySQL?是最常用的數(shù)據(jù)庫,在數(shù)據(jù)庫操作中,基本都是增刪改查操作,簡稱CRUD。但是,這篇文章主要介紹了數(shù)據(jù)庫和數(shù)據(jù)表如何創(chuàng)建,想詳細(xì)了解的小伙伴可以參考閱讀一下
    2023-03-03
  • MySQL中的join以及on條件的用法解析

    MySQL中的join以及on條件的用法解析

    這篇文章主要介紹了MySQL中的join以及on條件的用法,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • 在SpringBoot中實(shí)現(xiàn)WebSocket會話管理的方案

    在SpringBoot中實(shí)現(xiàn)WebSocket會話管理的方案

    在構(gòu)建實(shí)時(shí)通信應(yīng)用時(shí),WebSocket 無疑是一個強(qiáng)大的工具,SpringBoot提供了對WebSocket的支持,本文旨在探討如何在 Spring Boot 應(yīng)用中實(shí)現(xiàn) WebSocket 會話管理,我們將通過一個模擬的場景一步步展開討論,需要的朋友可以參考下
    2023-11-11
  • 刪庫跑路?使用xtraback備份MySQL數(shù)據(jù)庫的方法

    刪庫跑路?使用xtraback備份MySQL數(shù)據(jù)庫的方法

    mysqldump備份方式是采用邏輯備份,最大的缺陷就是備份和恢復(fù)的速度都慢,這時(shí)候就需要一種很好用又高效的工具,xtraback 就是其中的一款,號稱免費(fèi)版的innodb hotbackup。接下來通過本文給大介紹使用xtraback備份MySQL數(shù)據(jù)庫的方法,感興趣的朋友一起看看吧
    2018-10-10
  • MySQL的語法及其使用指南

    MySQL的語法及其使用指南

    數(shù)據(jù)庫的選取,創(chuàng)建,丟棄和變更 數(shù)據(jù)表和索引的創(chuàng)建,變更和丟棄從數(shù)據(jù)表檢索信息
    2008-04-04
  • VS2019連接mysql8.0數(shù)據(jù)庫的教程圖文詳解

    VS2019連接mysql8.0數(shù)據(jù)庫的教程圖文詳解

    這篇文章主要介紹了VS2019連接mysql8.0數(shù)據(jù)庫的教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • MySQL分庫分表與分區(qū)的入門指南

    MySQL分庫分表與分區(qū)的入門指南

    這篇文章主要給大家介紹了關(guān)于MySQL分庫分表與分區(qū)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • 一步步教你在Navicat上如何停止正在運(yùn)行的MYSQL語句

    一步步教你在Navicat上如何停止正在運(yùn)行的MYSQL語句

    很多時(shí)候我們會提交一些耗時(shí)比較長的sql,可能出現(xiàn)mysql服務(wù)器內(nèi)存或者CPU暴增,引起報(bào)警,甚至影響其他業(yè)務(wù),下面這篇文章主要給大家介紹了關(guān)于在Navicat上如何停止正在運(yùn)行的MYSQL語句的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • sql語句 update字段null不能用is null問題

    sql語句 update字段null不能用is null問題

    這篇文章主要介紹了sql語句 update字段null不能用is null問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Mysql MVCC多版本并發(fā)控制詳情

    Mysql MVCC多版本并發(fā)控制詳情

    這篇文章主要介紹了Mysql MVCC多版本并發(fā)控制詳情,MVCC是一種并發(fā)控制的方法,一般在數(shù)據(jù)庫管理系統(tǒng)中,實(shí)現(xiàn)對數(shù)據(jù)庫的并發(fā)訪問,在編程語言中實(shí)現(xiàn)事務(wù)內(nèi)存,下文更多相關(guān)介紹需要的小伙伴可以參考一下
    2022-04-04

最新評論