有没有办法使用SQL本身将SQL查询的结果转换为CSV文件?我正在寻找适用于SQL Server 2005及更高版本的解决方案。我浏览了谷歌,其中大部分都提出了管理工作室,基于XML的解决方案和SQLcmd中的点击式选项。我不想要那些解决方案。
我们可以在纯SQL中执行吗?编辑 - 是否可以仅使用SQL将结果保存为CSV文件?
答案 0 :(得分:3)
使用BCP工具。它是SQL Server的一部分。此外,'csv'不是一个明确定义的格式。您需要考虑如何处理包含字段和行分隔符(通常是逗号和换行符)的字段。
如果你确实需要在SQL Server会话中启动它,那么有几种方法可以做到这一点。所有这些都很笨重。请记住,实际运行SQL Server服务的Windows帐户可能甚至没有对要保存csv的文件系统的写入权限(可能不应该拥有权限)。
我强烈建议在SQL之外启动此任务。
答案 1 :(得分:2)
您可以使用字符串连接,但要小心结果字符串中的逗号
SELECT UserName + ',' + CAST(BirthDate as VARCHAR(12)) + ',' + CAST(NumberOfAccount as VARCHAR(10))
FROM Users
转义逗号使用SELECT '"' + ColumnWithCommas + "'" + ... FROM Table
编辑:您可以通过复制/粘贴将数据保存到CSV。作为替代方法,请使用this但请注意权限。理想情况下,您的帐户无权保存到磁盘
答案 2 :(得分:0)
您可以使用SQLCMD(如果您的计算机上有SSMS,则应该使用它)。拉起命令提示符。命令将是这样的:
sqlcmd -U <userid> -P <password> -S <hostname or ip> -q "<your select statement>" -o "<target file>"
我认为所有双引号都是必需的。它对我有用,所以我不担心。
如果您需要其他分隔符,请添加-s "<separator character>"
根据每行的宽度,您可能不得不使用-w <number of characters>
,或者您的数据可能会开始包装。
编辑: Anon对CSV的挑战提出了一些非常好的观点,无论采取何种方法,都要记住它们。