load out mysql,快速的mysql导入导出数据(load data和outfile)
當(dāng)讀取位于服務(wù)器上的文本文件時,文件必須處于數(shù)據(jù)庫目錄或可被所有人讀取。
1? 指定關(guān)鍵詞low_priority,MySQL將會等到?jīng)]有其他人讀這個表的時候,才把插入數(shù)據(jù)。可以使用如下的命令:
load?data??low_priority?infile?"/home/mark/data?sql"?into?table table_name;
2? 指定local關(guān)鍵詞,則表明從客戶主機讀文件。如果local沒指定,文件必須位于服務(wù)器上。
3? 指定replace,新行將代替有相同的唯一鍵值的現(xiàn)有行。
指定ignore,和唯一鍵值相同行的數(shù)據(jù)不會插入。如果你不指定任何一個選項,當(dāng)找到重復(fù)鍵時,出現(xiàn)一個錯誤,并且文本文件的余下部分被忽略。例如:
load?data??low_priority?infile?"/home/mark/data?sql"?replace?into?table table_name;
4?分隔符
(1)?fields關(guān)鍵字指定了文件記段的分割格式,如果用到這個關(guān)鍵字,MySQL剖析器希望看到至少有下面的一個選項:
terminated?by分隔符:以什么字符作為分隔符
enclosed?by字段括起字符
terminated?by描述字段的分隔符,默認(rèn)情況下是tab字符(\t)
escaped?by描述的轉(zhuǎn)義字符。默認(rèn)的是反斜杠(backslash:\?)
例如:load?data?infile?"/home/mark/Orders?txt"?replace?into?table?Orders?fields?terminated?by','?enclosed?by?'"';
(2)lines?關(guān)鍵字指定了每條記錄的分隔符默認(rèn)為'\n'即為換行符
如果兩個字段都指定了那fields必須在lines之前。如果不指定fields關(guān)鍵字缺省值與這樣寫的相同:?fields?terminated?by'\t'?enclosed?by?’?''?‘?escaped?by'\\'
如果你不指定一個lines子句,缺省值與如果你這樣寫的相同:?lines?terminated?by'\n'
例如:load?data?infile?"/jiaoben/load.txt"?replace?into?table?test?fields?terminated?by?','?lines?terminated?by?'/n';
5? 按指定的列把文件導(dǎo)入到數(shù)據(jù)庫中。
當(dāng)我們要把數(shù)據(jù)的一部分內(nèi)容導(dǎo)入的時候,,需要加入一些欄目(列/字段/field)到MySQL數(shù)據(jù)庫中
load?data?infile?"/home/Order?txt"?into?table?Orders(field1, field2, filed3);
如果一個行有很少的字段,對于不存在輸入字段的列被設(shè)置為缺省值。
如果字段值缺省,空字段值有不同的解釋:
對于字符串類型,列被設(shè)置為空字符串。
對于數(shù)字類型,列被設(shè)置為0。
對于日期和時間類型,列被設(shè)置為該類型的適當(dāng)“零”值。
如果列有一個NULL,或(只對第一個TIMESTAMP列)在指定一個字段表時,如果TIMESTAMP列從字段表省掉,TIMESTAMP列只被設(shè)置為當(dāng)前的日期和時間。
6??當(dāng)在服務(wù)器主機上尋找文件時,服務(wù)器使用下列規(guī)則:
(1)如果給出一個絕對路徑名,服務(wù)器使用該路徑名。
(2)如果給出一個有一個或多個前置部件的相對路徑名,服務(wù)器相對服務(wù)器的數(shù)據(jù)目錄搜索文件。
(3)如果給出一個沒有前置部件的一個文件名,服務(wù)器在當(dāng)前數(shù)據(jù)庫的數(shù)據(jù)庫目錄尋找文件。
例如:?/myfile?txt”給出的文件是從服務(wù)器的數(shù)據(jù)目錄讀取,而作為“myfile?txt”給出的一個文件是從當(dāng)前數(shù)據(jù)庫的數(shù)據(jù)庫目錄下讀取。
2.outfile
select * from Table into outfile '/路徑/文件名'
fields terminated by ','
enclosed by '"'
lines terminated by '\r\n'
如果指定了FIELDS子句,則這三個亞子句中至少要指定一個。
terminated by指定字段值之間的符號,例如,“terminated by ','”指定了逗號作為兩個字段值之間的標(biāo)志。
enclosed by指定包裹文件中字符值的符號,例如,“enclosed by '?"?'”表示文件中字符值放在雙引號之間,若加上關(guān)鍵字OPTIONALLY表示所有的值都放在雙引號之間。
escaped by指定轉(zhuǎn)義字符,例如,“ESCAPED?BY?'*'”將“*”指定為轉(zhuǎn)義字符,取代“\”,如空格將表示為“*N”。
LINES子句:在LINES子句中使用TERMINATED?BY指定一行結(jié)束的標(biāo)志,如“LINES?TERMINATED?BY?'?'”表示一行以“?”作為結(jié)束標(biāo)志。
總結(jié)
以上是生活随笔為你收集整理的load out mysql,快速的mysql导入导出数据(load data和outfile)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pythonhtml生成word_pyt
- 下一篇: mybatis mysql 调用存储过程