1. 程式人生 > >MySQL select into outfile用法

MySQL select into outfile用法

SELECT INTO…OUTFILE語句把表資料匯出到一個文字檔案中,並用LOAD DATA …INFILE語句恢復資料。但是這種方法只能匯出或匯入資料的內容,不包括表的結構,如果表的結構檔案損壞,則必須先恢復原來的表的結構。

    一、SELECT INTO…OUTFILE語法:

select * from Table into outfile '/路徑/檔名'
fields terminated by ','
enclosed by '"'
lines terminated by '\r\n'

(1)路徑目錄必須有讀寫許可權777
(2)檔名必須唯一
(3)fields terminated by ','必須存在,否則開啟的檔案的列在同一的單元格中出現
(4)我驗證的表結構為gbk的,否則出現亂碼

●  fields子句:在FIELDS子句中有三個亞子句:TERMINATED BY、 [OPTIONALLY] ENCLOSED BY和ESCAPED BY。如果指定了FIELDS子句,則這三個亞子句中至少要指定一個。

(1)TERMINATED BY用來指定欄位值之間的符號,例如,“TERMINATED BY ','”指定了逗號作為兩個欄位值之間的標誌。

(2)ENCLOSED BY子句用來指定包裹檔案中字元值的符號,例如,“ENCLOSED BY ' " '”表示檔案中字元值放在雙引號之間,若加上關鍵字OPTIONALLY表示所有的值都放在雙引號之間。

(3)ESCAPED BY子句用來指定轉義字元,例如,“ESCAPED BY '*'”將“*”指定為轉義字元,取代“\”,如空格將表示為“*N”。

●   LINES子句:在LINES子句中使用TERMINATED BY指定一行結束的標誌,如“LINES TERMINATED BY '?'”表示一行以“?”作為結束標誌。

二、LOAD DATA …INFILE語句是SELECT INTO…OUTFILE語句的補語,該語句可以將一個檔案中的資料匯入到資料庫中。

 sql 語句

select * from
(select `PhoneNo`,`TaskName`,`Status`,`Dialdtimes`,`Agent`,`DialTime`,`DialEndTime`,`DialResult`,`TalkEndTime`
from t_title 
union all
select * from
(select t.PhoneNo,'task_20_2' as Name,IFNULL(b.status_name,'') as Status_name ,IFNULL(t.DialedTimes,''),IFNULL(t.AgentAccount,''),IFNULL(t.DialTime,''),IFNULL(t.DialEndTime,''),'未呼' as result,IFNULL(t.TalkEndTime,'') from t_od_taskphoneno t
left join biz_outdial.phone_status
 b on t.Status = b.status_id where t.enterprise_id = "30092638" AND TaskId = "49" and DialTime is null  order by ID desc limit 10
) as tmp1 ) as tmp
into outfile  '/mnt/backup/test00001.csv'
fields terminated by ','
enclosed by '"'
lines terminated by '\r\n

1. union all 和 union的區別

Union,對兩個結果集進行並集操作,不包括重複行,同時進行預設規則的排序;

Union All,對兩個結果集進行並集操作,包括重複行,不進行排序;

Intersect,對兩個結果集進行交集操作,不包括重複行,同時進行預設規則的排序;

Minus,對兩個結果集進行差操作,不包括重複行,同時進行預設規則的排序

2.IFNULL(t.AgentAccount,''),如果是預設值,則用/N來代替。因為不想要這個效果,所以加IFNULL(t.AgentAccount,'')這個限定條件

3.as tmp1必須要有,否則進行排序時 order by ID decs 提示"ID 不存在"的錯誤