0

我有以下 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

4 回答 4

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检查语法。

于 2012-04-04T20:14:16.117 回答
2

似乎 MySQL 本身并不支持在导出中包含列标题的能力。一个简单的谷歌搜索返回了这篇文章,它使用流编辑将列添加到导出文件。

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

于 2012-04-04T20:03:30.813 回答
0

你试过用INTO OUTFILE 'file_name' export_options吗?

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

于 2012-04-04T20:02:56.977 回答
-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 文件位于托管数据库的服务器中。

于 2012-04-04T20:01:37.193 回答