我有以下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
我该怎么做?
答案 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
?
答案 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文件位于托管数据库的服务器中。