SQL SELECT - > csv文件

时间:2012-04-04 19:54:58

标签: mysql sql

我有以下SQL命令需要保存为带有列标题的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

我该怎么做?

4 个答案:

答案 0 :(得分:3)

如果我没有犯任何语法错误,这应该有效:

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

答案 1 :(得分:2)

MySQL似乎没有natively support在导出中包含列标题的功能。一个简单的谷歌搜索返回了这个article,它使用流编辑将列添加到导出文件。

您可能还想阅读此SO post(和已接受的解决方案),因为它似乎是另一种选择。

答案 2 :(得分:0)

您是否尝试使用INTO OUTFILE 'file_name' export_options

http://dev.mysql.com/doc/refman/5.0/en/select.html

答案 3 :(得分:-1)

您可以简单地使用BCP命令,在这种情况下,如果您使用的是SQL管理工作室,则必须启用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文件位于托管数据库的服务器中。