Mysql SQL选择-->;csv文件

Mysql SQL选择-->;csv文件,mysql,sql,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 AN

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

如何执行此操作?

您可以简单地使用BCP命令,在这种情况下,如果您使用的是SQL Manager studio,则必须启用xp\u 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文件位于数据库所在的服务器中。

您可以简单地使用BCP命令,在这种情况下,如果您使用的是SQL mangement studio,则必须启用xp\u 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文件位于数据库所在的服务器中。

是否尝试使用
导出文件“文件名”导出选项


您是否尝试使用
导出文件“文件名”导出选项


看来MySQL无法在导出中包含列标题。一个简单的google搜索返回了这个结果,它使用流编辑将列添加到导出文件中


您可能还想阅读此(以及已接受的解决方案),因为它似乎是另一个选项。

MySQL似乎无法在导出中包含列标题。一个简单的google搜索返回了这个结果,它使用流编辑将列添加到导出文件中


您可能还想阅读此(以及公认的解决方案),因为它似乎是另一种选择。

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

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 '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
语句生成的结果集中,而不是实际的insert语句。啊,这很有意义+1在这种情况下,联合不应该对性能产生不利影响。正如您在这里所述,有人提到过使用联合的人,但必须注意优化查询,否则针对大型数据集的联合可能会导致问题。对,实际上,我指的是一个
联合所有
。但是,为什么添加单个记录会导致问题?您能否澄清或提供任何示例或文档链接?谢谢。“添加单个记录会导致问题吗?”。对不起,我不明白这个问题。没有只添加选定的记录。我的意思是将单个记录添加到
select
语句生成的结果集中,而不是实际的insert语句。啊,这很有意义+1在这种情况下,联合不应对性能产生不利影响。请注意,作者需要回答MySQL而不是MSSQLServer。请注意,作者需要回答MySQL而不是MSSQLServer