2012-04-04 60 views
0

我有以下SQL命令,我需要爲csv文件保存的列標題:SQL SELECT - > CSV文件

mysql > SELECT a.last_name, a.first_name, username, is_active, graduation 
     FROM auth_user a 
     INNER JOIN 
      userprofile_userprofile u 
      ON a.id = u.user_id 
     WHERE a.id>39 AND a.is_active=1 ORDER BY last_name 

我會怎麼做呢?

回答

3

如果我沒有任何commiting語法錯誤,這應該工作:

SELECT 'LastName', 'FirstName', 'Username', 'IsActive', 'Graduation' 
UNION ALL 
SELECT a.last_name, a.first_name, username, is_active, graduation 
INTO OUTFILE 'yourFile.csv' 
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' 
FROM auth_user a 
INNER JOIN userprofile_userprofile u 
ON a.id = u.user_id 
WHERE a.id>39 AND a.is_active=1 
ORDER BY last_name 

MySQL不會讓你添加列標題,所以你可以很難在組織機構代碼它們。

您還可以檢查SELECT ... INTO語法here

+0

有提到的使用工會作爲你在這裏所概述的人,但要小心,以優化查詢,否則工會對大型數據集可能會導致問題。 – 2012-04-04 20:24:52

+0

對,我的意思是'UNION ALL',實際上。但是,爲什麼添加單個記錄會導致問題?您能否澄清或提供任何示例或文檔鏈接?謝謝。 「 – 2012-04-04 20:30:34

+0

」會添加單個記錄導致問題?「。對不起,我不明白這個問題。沒有記錄只被添加。 – 2012-04-04 20:38:50

-1

,你可以簡單地使用BCP命令,在這種情況下,你有,如果你使用的是SQL管理CHINESE工作室啓用xp_cmdshell的。

下面是一個例子

DECLARE @bcpCommand varchar(2000) 

SET @bcpCommand = 'bcp "SELECT * FROM users" queryout "c:\dump.csv" -U USERNAME -P PASSWORD -c' 

EXEC master..xp_cmdshell @bcpCommand 

注意,CSV文件位於數據庫所在的託管服務器。

+0

注意,作者需要對MySQL的答案不是MSSQLSERVER – Hybris95 2016-11-30 10:01:40

2

看來,MySQL不會natively support包括在出口列標題的能力。一個簡單的谷歌搜索返回這個article,它使用流編輯將列添加到導出文件。

您可能還需要閱讀本SO post(和接受的解決方案),因爲它似乎是另一種選擇。