2011-10-21 56 views
0

所以我使用運行下面的查詢,以我的錶轉儲到CSV文件:類型檢查在MySQL查詢

SELECT * INTO OUTFILE 'testout.csv' 
FIELDS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '\"' 
LINES TERMINATED BY '\n' 
FROM dbname.tblname; 

這工作得很好,但所有的字段都被雙引號括起來。我想獲得它,以便只有varchar(即字符串)字段被輸出中的引號包圍。有沒有簡單的方法來做到這一點?它可能會涉及查詢中的類型檢查字段,但我對如何處理這個問題沒有絲毫的線索。任何幫助將不勝感激。

+0

最後一行?你什麼意思? – Matt

回答

2

當你OPTIONALLY ENCLOSED BY現在應該已經做你想要的:

如果指定可選的,ENCLOSED BY字符僅用於封閉從具有字符串數據類型列中的值(如CHAR,BINARY,TEXT或ENUM):

1,"a string",100.20 
2,"a string containing a , comma",102.20 
3,"a string containing a \" quote",102.20 
4,"a string containing a \", quote and comma",102.20 

你確定你沒有VARCHAR列,每列?

+0

你說得對,謝謝!我將結果與列名的列表結合在一起,這些列名必須已經搞亂了基本類型的引號。有沒有簡單的方法來添加列名作爲輸出的第一行,不會打破雙引號? – Matt

+0

@Matt:使用列別名。 –

+0

我試過了,仍然創建了原始帖子中描述的問題。這是有道理的,因爲cols必須是我猜想的相同類型。這可能沒有簡單的方法。 – Matt