用SQL本身将SQL查询的结果转换为CSV?

0 人关注

有没有一种方法可以用SQL本身将SQL查询的结果转换为CSV文件?我正在寻找一个适用于SQL server 2005及以上版本的解决方案。我在google上看了看,大多数人建议在management studio中点击选项,基于XML的解决方案和SQLcmd。我不想要这些解决方案。

我们可以用普通的SQL来做吗?EDIT - 是否可以只用SQL将结果保存到CSV文件中?

sql-server
sql-server-2008
sql-server-2005
csv
Trojan.ZBOT
Trojan.ZBOT
发布于 2013-11-22
3 个回答
Anon
Anon
发布于 2013-11-22
已采纳
0 人赞同

使用 BCP 工具。 它是SQL Server的一部分。 另外,'csv'不是一个定义明确的格式。 你需要考虑如何处理包含你的字段和行定界符(通常是逗号和换行符)的字段。

如果你真的非常需要从SQL Server会话中启动这个,有几种方法可以做到。 所有这些方法都很笨拙。 请记住,实际运行SQL Server服务的Windows账户甚至可能没有你想保存csv的文件系统的写入权限(它可能 不应该 有这个权限)。

我强烈建议在SQL之外启动这项任务。

是的,一些编程语言,如VB或C#
evhen14
evhen14
发布于 2013-11-22
0 人赞同

你可以使用字符串连接法,但要注意结果字符串中的逗号。

SELECT UserName + ',' + CAST(BirthDate as VARCHAR(12)) + ',' + CAST(NumberOfAccount as VARCHAR(10)) 
FROM Users

逃避逗号的方法是使用SELECT '"' + ColumnWithCommas + "'" + ... FROM Table

编辑:你可以需要通过复制/粘贴将数据保存为CSV。作为一个替代方法,可以使用这个方法,但要注意权限问题。理想情况下,你的账户不应该有保存到磁盘的权限。

需要在第二次投稿前有一个加号。这可以用SQL本身保存到一个文件中吗?
只是想了解一下。你是否希望SQL查询的输出文件为CSV?
@goofyui - 是的,这正是我所期望的。不过有一个PDF的解决方案 - sqlservercentral.com/articles/Miscellaneous/.. .
Andrew
Andrew
发布于 2013-11-22
0 人赞同

你可以使用SQLCMD(如果你的机器上有SSMS,你应该有它)。 拉出一个命令提示符。 该命令将是类似这样的内容。

sqlcmd -U <userid> -P <password> -S <hostname or ip> -q "<your select statement>" -o "<target file>"

所有的双引号都是需要的,我想。我认为所有的双引号都是需要的,有了双引号我就能工作,所以我不担心。

如果你想要一个不同的分隔符,添加-s "<separator character>"