SQL Server创建有问题的CSV文件

时间:2011-03-11 15:25:11

标签: sql-server csv

当使用SQL Server(2005,2008)“将结果另存为...”选项时,我确实得到了一个CSV,但是SQL Server没有做我认为适当的CSV创建。

具体来说,如果我的数据包含逗号,那么这些字段不会用双引号括起来。我现在正在查看的特定数据集不包含带双引号的字段,但如果确实如此,我不确定SQL Server是否会正确执行这些操作。

每周我都要对远程服务器上的数据库运行查询,该数据库生成大约36,000行,我必须以CSV格式将其恢复到办公室中的某个人。到目前为止,我一直在复制数据,然后将其粘贴到Excel(通过远程桌面)。但是从远程剪贴板粘贴36k行需要花费很长时间。当这种情况发生时,Excel会提供各种“等待OLE操作完成”消息框。

我更喜欢只运行查询,将结果保存为远程服务器本身的CSV,然后复制文件。

长期来说,我会为我自动编写一个流程,但是我已经解决了SQL Server这个问题多年了,但是疼痛程度还不够高,我现在找不到解决方案了

4 个答案:

答案 0 :(得分:1)

抱歉,我现在不在Windows框中 - 您是在谈论SQL Management Studio中的查询管理器应用程序吗?

执行所需操作的最佳方法是使用SQL Server提供的数据导入/导出工具(抱歉,现在无法检查名称)。

答案 1 :(得分:1)

选择菜单项工具>出现选项和选项对话框。在“选项”对话框中,导航到“查询结果”> SQL Server> '结果到文本'。选择“输出格式”项“自定义分隔符”。在“自定义分隔符”字段中指定分隔符。单击“确定”保存。

打开查询窗口并选择菜单项Query> '结果'和'结果到文件'或'结果到文本'。运行您的查询,该查询将使用您指定的分隔符输出。

对于自动化过程,请查看SQL Server BCP命令行实用程序,以便从SQL Server输出数据。通过命令行开关,您可以完全控制分隔符和文本限定符。使用BCP非常简单,即使长期过程的其他元素没有到位,我也建议使用它

我有一个自动流程调用BCP,它使用存储过程收集每晚压缩和FTP到客户端的数据。我的进程在SQL Server计算机上的Scheduled Task启动的批处理文件中运行。

答案 2 :(得分:1)

这听起来像是SSMS错误而不是sql server错误。我认为乔的答案会解决你的问题。

如果你有可以使用的Integration Services,我会恳请你看一下,你可以在任何时候敲一个包来做。

答案 3 :(得分:1)

我一直在使用内部制作的VBS脚本将结果集导出为CSV文件已经有一段时间了。

这是一个链接:exec_script.zip

以下是一个示例用法:

c:>cscript //nologo exec_script.vbs /s:MyServer /d:MyDb /q:"exec MyStoredProc" /r:MyFile.csv /header