1. 程式人生 > >MySQL基礎之 匯出匯入之文字檔案

MySQL基礎之 匯出匯入之文字檔案

1、使用SELECT.......INTO  OUTFILE匯出文字檔案

該檔案被建立在伺服器主機上,因此必須有檔案寫入許可權(FILE許可權),才能使用此語法

語法:

select columnlist  from Table WHERE condition  into outfile 'filename' [OPTIONS]
fields terminated by 'VALUE'
fields [OPTIONALLY]  ENCLOSED BY 'VALUE'
fields ESCAPED BY 'VALUE'
lines STARTING by 'VALUE'
lines terminated 
by 'VALUE'

[OPTIONS]部分為可選引數,[OPTIONS]部分的語法包括FILED和LINES子句,其可能取值為:

● fields子句:在FIELDS子句中有三個子句:TERMINATED BY、 [OPTIONALLY] ENCLOSED BY和ESCAPED BY。

如果指定了FIELDS子句,則這三個子句中至少要指定一個。
(1)TERMINATED BY用來指定欄位值之間的符號,例如,“TERMINATED BY ','”指定了逗號作為兩個欄位值之間的標誌,預設為“\t”製表符。
(2)ENCLOSED BY子句用來指定包裹檔案中字元值的符號,例如,“ENCLOSED BY ' " '”表示檔案中字元值放在雙引號之間,

若加上關鍵字OPTIONALLY表示所有的值都放在雙引號之間,則只有CHAR和VARCHAR等字元資料欄位被包括。

(3)ESCAPED BY子句用來指定轉義字元,例如,“ESCAPED BY '*'”將“*”指定為轉義字元,取代“\”,如空格將表示為“*N”。
● LINES子句:在LINES子句中使用TERMINATED BY指定一行結束的標誌,如“LINES TERMINATED BY '?'”表示一行以“?”作為結束標誌,預設值為“\n”。

LINES STARTING BY ''表示每行資料開頭的字元,可以為單個或多個,預設不是有任何字元

如果在匯出的時候沒有制定OPTIONS的引數,匯入表的時候也不用指明這些引數。

注意:這個SELECT命令匯出文字檔案有限制,就是想要在伺服器主機之外的部分客戶主機上建立結果檔案,不能使用此引數。應該使用“mysql  -e”命令。(就是我們使用客戶端連線遠端的伺服器端的操作,怪不得TIDB資料庫不支援這個命令匯出資料)

2、使用“mysql  -e”命令匯出文字檔案.

這個就是說我們可以在命令模式下執行SQL指令,將查詢結果匯入到一個類似與csv格式的文字檔案中。

mysql -u root -p --execute="SELECT * from tablename" dbname >filename.txt

上面的select語句必須使用雙引號引起來。匯出的資料使用製表符分割了。

3、使用LOAD   DATA  INFILE方式匯入文字檔案

LOAD DATA [LOCAL] INFILE 'filename' INTO TABLE dataname.tablename [OPTION] [IGNORE number LINES]
fields terminated by 'VALUE'
fields [OPTIONALLY]  ENCLOSED BY 'VALUE'
fields ESCAPED BY 'VALUE'
lines STARTING by 'VALUE'
lines terminated by 'VALUE'

● fields子句:在FIELDS子句中有三個子句:TERMINATED BY、 [OPTIONALLY] ENCLOSED BY和ESCAPED BY。

如果指定了FIELDS子句,則這三個子句中至少要指定一個。
(1)TERMINATED BY用來指定欄位值之間的符號,例如,“TERMINATED BY ','”指定了逗號作為兩個欄位值之間的標誌,預設為“\t”製表符。
(2)ENCLOSED BY子句用來指定包裹檔案中字元值的符號,例如,“ENCLOSED BY ' " '”表示檔案中字元值放在雙引號之間,

若加上關鍵字OPTIONALLY表示所有的值都放在雙引號之間,則只有CHAR和VARCHAR等字元資料欄位被包括。

(3)ESCAPED BY子句用來指定轉義字元,例如,“ESCAPED BY '*'”將“*”指定為轉義字元,取代“\”,如空格將表示為“*N”。
● LINES子句:在LINES子句中使用TERMINATED BY指定一行結束的標誌,如“LINES TERMINATED BY '?'”表示一行以“?”作為結束標誌,預設值為“\n”。

LINES STARTING BY ''表示每行資料開頭的字元,可以為單個或多個,預設不是有任何字元.