最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL load語句詳細(xì)介紹

 更新時(shí)間:2014年12月02日 11:29:19   投稿:junjie  
這篇文章主要介紹了MySQL load語句詳細(xì)介紹,本文講解了load的基本語法、文件的路徑、配置選項(xiàng)、STARTING LINES選項(xiàng)、TERMINATED LINES選項(xiàng)等內(nèi)容,需要的朋友可以參考下

load的語法

復(fù)制代碼 代碼如下:

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語句用于高速地從一個(gè)文本文件中讀取行,并裝入一個(gè)表中。文件名稱必須為一個(gè)文字字符串。

由character_set_database系統(tǒng)變量指示的字符集被用于解釋文件中的信息。SET NAMES和character_set_client的設(shè)置不會(huì)影響對輸入的解釋。

典型的示例

復(fù)制代碼 代碼如下:

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

如果您只想載入一個(gè)表的部分列,則應(yīng)指定一個(gè)列清單:

復(fù)制代碼 代碼如下:

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

文件的路徑

如果指定了LOCAL,則被認(rèn)為與連接的客戶端有關(guān):

 1.如果指定了LOCAL,則文件會(huì)被客戶主機(jī)上的客戶端讀取,并被發(fā)送到服務(wù)器。文件會(huì)被給予一個(gè)完整的路徑名稱,以指定確切的位置。如果給定的是一個(gè)相對的路徑名稱,則此名稱會(huì)被理解為相對于啟動(dòng)客戶端時(shí)所在的目錄。

 2.如果LOCAL沒有被指定,則文件必須位于服務(wù)器主機(jī)上,并且被服務(wù)器直接讀取。

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

1).如果給定了一個(gè)絕對的路徑名稱,則服務(wù)器使用此路徑名稱。
2).如果給定了帶有一個(gè)或多個(gè)引導(dǎo)組件的相對路徑名稱,則服務(wù)器會(huì)搜索相對于服務(wù)器數(shù)據(jù)目錄的文件。
3).如果給定了一個(gè)不帶引導(dǎo)組件的文件名稱,則服務(wù)器會(huì)在默認(rèn)數(shù)據(jù)庫的數(shù)據(jù)庫目錄中尋找文件。

注意,這些規(guī)則意味著名為./myfile.txt的文件會(huì)從服務(wù)器數(shù)據(jù)目錄中被讀取,而名為myfile.txt的同樣的文件會(huì)從默認(rèn)數(shù)據(jù)庫的數(shù)據(jù)庫目錄中讀取。

從客戶端使用絕對路徑load數(shù)據(jù)

復(fù)制代碼 代碼如下:

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

從服務(wù)器里使用相對路徑load數(shù)據(jù)

下面的LOAD DATA語句會(huì)從db1數(shù)據(jù)庫目錄中讀取文件data.txt,因?yàn)閐b1是當(dāng)前數(shù)據(jù)庫。即使語句明確把文件載入到db2數(shù)據(jù)庫中的表里,也會(huì)從db1目錄中讀取。

復(fù)制代碼 代碼如下:

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

IGNORE number LINES選項(xiàng)

IGNORE number LINES選項(xiàng)可以被用于在文件的開始處忽略行。

您可以使用IGNORE 1 LINES來跳過一個(gè)包含列名稱的起始標(biāo)題行:

復(fù)制代碼 代碼如下:

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

REPLACE和IGNORE

有些輸入記錄把原有的記錄復(fù)制到唯一關(guān)鍵字值上。REPLACE和IGNORE關(guān)鍵字用于控制這些輸入記錄的操作。

如果您指定了REPLACE,則輸入行會(huì)替換原有行(換句話說,與原有行一樣,對一個(gè)主索引或唯一索引具有相同值的行)。

如果您指定IGNORE,則把原有行復(fù)制到唯一關(guān)鍵字值的輸入行被跳過。

如果您這兩個(gè)選項(xiàng)都不指定,則運(yùn)行情況根據(jù)LOCAL關(guān)鍵詞是否被指定而定。不使用LOCAL時(shí),當(dāng)出現(xiàn)重復(fù)關(guān)鍵字值時(shí),會(huì)發(fā)生錯(cuò)誤,并且剩下的文本文件被忽略。使用LOCAL時(shí),默認(rèn)的運(yùn)行情況和IGNORE被指定時(shí)的情況相同;這是因?yàn)樵谶\(yùn)行中間,服務(wù)器沒有辦法中止文件的傳輸

索引的影響

如果您對一個(gè)空的MyISAM表使用LOAD DATA INFILE,則所有的非唯一索引會(huì)被創(chuàng)建在一個(gè)獨(dú)立批中(對于REPAIR TABLE)。當(dāng)您有許多索引時(shí),這通常會(huì)使LOAD DATA INFILE大大加快。通常,LOAD DATA INFILE的速度會(huì)非???,但是在某些極端情況下,您可以在把文件載入到表中之前使用ALTER TABLE...DISABLE KEYS關(guān)閉LOAD DATA INFILE,或者在載入文件之后使用ALTER TABLE...ENABLE KEYS再次創(chuàng)建索引,使創(chuàng)建索引的速度更快。

FIELDS和LINES的默認(rèn)值

如果您不指定FIELDS子句,則默認(rèn)值為假設(shè)您寫下如下語句時(shí)的值:

復(fù)制代碼 代碼如下:

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

如果您不指定LINES子句,則默認(rèn)值為假設(shè)您寫下如下語句時(shí)的值:

復(fù)制代碼 代碼如下:

LINES TERMINATED BY '\n' STARTING BY ''

換句話說,當(dāng)讀取輸入值時(shí),默認(rèn)值會(huì)使LOAD DATA INFILE按如下方式運(yùn)行:

復(fù)制代碼 代碼如下:

在新行處尋找行的邊界。
不會(huì)跳過任何行前綴。
在制表符處把行分解為字段。
不希望字段被包含在任何引號(hào)字符之中。
出現(xiàn)制表符、新行、或在‘\'前有‘\'時(shí),理解為作為字段值一部分的文字字符。

相反的,當(dāng)編寫輸出值時(shí),默認(rèn)值會(huì)使SELECT...INTO OUTFILE按如下方式運(yùn)行:

復(fù)制代碼 代碼如下:

在字段之間寫入制表符。
不把字段包含在任何引號(hào)字符中。
當(dāng)字段值中出現(xiàn)制表符、新行或‘\'時(shí),使用‘\'進(jìn)行轉(zhuǎn)義。
在行的末端寫入新行。

注意,要寫入FIELDS ESCAPED BY ‘\\',您必須為待讀取的值指定兩個(gè)反斜杠,作為一個(gè)單反斜杠使用。

備注:如果您已經(jīng)在Windows系統(tǒng)中生成了文本文件,您可能必須使用LINES TERMINATED BY ‘\r\n'來正確地讀取文件,因?yàn)閃indows程序通常使用兩個(gè)字符作為一個(gè)行終止符。部分程序,當(dāng)編寫文件時(shí),可能會(huì)使用\r作為行終止符。要讀取這樣的文件,應(yīng)使用LINES TERMINATED BY ‘\r'。

STARTING  LINES選項(xiàng)

如果所有您希望讀入的行都含有一個(gè)您希望忽略的共用前綴,則您可以使用'prefix_string'來跳過前綴(和前綴前的字符)。如果某行不包括前綴,則整個(gè)行被跳過。注釋:prefix_string會(huì)出現(xiàn)在一行的中間。

以下面的test.txt為文件源

復(fù)制代碼 代碼如下:

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

使用以下sql導(dǎo)入數(shù)據(jù)

復(fù)制代碼 代碼如下:

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

最后并只得到數(shù)據(jù)("row",1)和("row",2)。

TERMINATED LINES選項(xiàng)

如果jokes被由%%組成的行分隔,要讀取包含jokes的文件,您可以這么操作:

復(fù)制代碼 代碼如下:

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

TERMINATED,ENCLOSED,ESCAPED FIELD選項(xiàng)

TERMINATED用于控制字段的分隔符,可以為多個(gè)字符。

ENCLOSED BY用于用于控制字段的引號(hào),必須為單一字符,如果您忽略了詞語OPTIONALLY,則所有的字段都被包含在ENCLOSED BY字符串中,如果您指定了OPTINALLY,則ENCLOSED BY字符只被用于包含具有字符串?dāng)?shù)據(jù)類型(比如CHAR, BINARY, TEXT或ENUM)的列中的值.

SELECT...INTO OUTFILE導(dǎo)出數(shù)據(jù),ENCLOSED BY '"',忽略O(shè)PTIONALLY

復(fù)制代碼 代碼如下:

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

SELECT...INTO OUTFILE導(dǎo)出數(shù)據(jù),ENCLOSED BY '"',指定OPTIONALLY

復(fù)制代碼 代碼如下:

1,"a string",100.20

ESCAPED BY用于轉(zhuǎn)義,F(xiàn)IELDS ESCAPED BY值必須為單一字符。

如果FIELDS ESCAPED BY字符為空字符,則沒有字符被轉(zhuǎn)義,并且NULL被作為NULL輸出,而不是\N。去指定一個(gè)空的轉(zhuǎn)義符不是一個(gè)好辦法,特別是如果數(shù)據(jù)的字段值包含任何剛給定的清單中的字符時(shí),更不能這么做。

如果在字段值內(nèi)出現(xiàn)ENCLOSED BY字符,則通過使用ESCAPED BY字符作為前綴,對ENCLOSED BY字符進(jìn)行轉(zhuǎn)義。

相關(guān)文章

  • 淺析MySQL 鎖和事務(wù)

    淺析MySQL 鎖和事務(wù)

    這篇文章主要介紹了MySQL 鎖和事務(wù)的相關(guān)資料,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2020-09-09
  • Mysql 索引該如何設(shè)計(jì)與優(yōu)化

    Mysql 索引該如何設(shè)計(jì)與優(yōu)化

    這篇文章主要介紹了Mysql 索引該如何設(shè)計(jì)與優(yōu)化,幫助大家更好的理解和學(xué)習(xí)使用MySQL,感興趣的朋友可以了解下
    2021-03-03
  • MySQL解決字符集編碼問題

    MySQL解決字符集編碼問題

    MySQL的默認(rèn)編碼方式是?拉丁文,如果想要設(shè)置一些漢字的數(shù)據(jù).可能會(huì)報(bào)錯(cuò).這篇文章中主要介紹了解決這個(gè)問題的方法,需要的朋友可以參考一下
    2023-04-04
  • Mysql掛掉后無法重啟報(bào)pid文件丟失的解決方法

    Mysql掛掉后無法重啟報(bào)pid文件丟失的解決方法

    這篇文章主要介紹了Mysql掛掉后無法重啟報(bào)pid文件丟失的解決方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-09-09
  • MySQL中varchar和char類型的區(qū)別

    MySQL中varchar和char類型的區(qū)別

    VARCHAR和CHAR是兩種最主要的字符串類型。那么MySQL中varchar和char類型的區(qū)別是什么,本文就具體來介紹一下,感興趣的可以了解一下
    2021-11-11
  • Windows下MySQL8.0.11社區(qū)綠色版安裝步驟圖解

    Windows下MySQL8.0.11社區(qū)綠色版安裝步驟圖解

    在本教程中使用MySQL最新的MySQL服務(wù)8.0.11的社區(qū)綠色版本進(jìn)行安裝,綠色版為zip格式的包,安裝步驟分為四大步驟,具體哪四大步驟大家跟隨腳本之家小編一起學(xué)習(xí)吧
    2018-05-05
  • MySQL的左連接、右連接、內(nèi)連接用法解讀

    MySQL的左連接、右連接、內(nèi)連接用法解讀

    這篇文章主要介紹了MySQL的左連接、右連接、內(nèi)連接用法,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • MySQL查詢性能優(yōu)化的7個(gè)常見查詢錯(cuò)誤及解決方案

    MySQL查詢性能優(yōu)化的7個(gè)常見查詢錯(cuò)誤及解決方案

    數(shù)據(jù)庫性能是Web應(yīng)用和大型軟件系統(tǒng)穩(wěn)定運(yùn)行的關(guān)鍵,即使是精心設(shè)計(jì)的應(yīng)用,如果數(shù)據(jù)庫查詢效率低下,也會(huì)導(dǎo)致用戶體驗(yàn)下降、系統(tǒng)資源浪費(fèi),甚至系統(tǒng)崩潰,本文將深入探討MySQL查詢優(yōu)化,分析常見的查詢錯(cuò)誤,并提供提升數(shù)據(jù)庫性能的實(shí)用技巧,需要的朋友可以參考下
    2025-04-04
  • phpstudy中mysql無法啟動(dòng)(與本地安裝的mysql沖突)的解決方式

    phpstudy中mysql無法啟動(dòng)(與本地安裝的mysql沖突)的解決方式

    這篇文章主要給大家介紹了關(guān)于phpstudy中mysql無法啟動(dòng)(與本地安裝的mysql沖突)的解決方式,文中通過圖文將解決的方法介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • mysql中key 、primary key 、unique key 與index區(qū)別

    mysql中key 、primary key 、unique key 與index區(qū)別

    這篇文章主要介紹了mysql中key 、primary key 、unique key 與index區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2016-10-10

最新評論

达孜县| 松原市| 株洲县| 扎赉特旗| 疏附县| 玉林市| 宜君县| 大姚县| 涞源县| 武平县| 尉氏县| 西盟| 闻喜县| 四会市| 崇左市| 吴桥县| 武义县| 凌源市| 二连浩特市| 大港区| 且末县| 陇南市| 高碑店市| 安福县| 林口县| 怀化市| 菏泽市| 南召县| 杂多县| 三台县| 滨州市| 龙州县| 庐江县| 鄂托克前旗| 交城县| 阿拉善盟| 张北县| 刚察县| 长沙市| 光泽县| 大名县|