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 terminatedby ‘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 ‘‘表示每行數據開頭的字符,可以為單個或多個,默認不是有任何字符.
MySQL基礎之 導出導入之文本文件