2009-11-27 50 views
1

我需要将我的sql查询结果转储到文本文件中。我创建了以下查询,将Sql Recordset保存到格式良好的csv文件中?

DECLARE @cmd VARCHAR(2048) 

SET @cmd = 'OSQL -Slocalhost ' 
      + ' -UCRN370 -PCRN370' 
      + ' -Q"SELECT TOP 5 GageId FROM EwQMS370..msgages"' 
      + ' -oc:\authors.csv' 

EXEC master..xp_cmdshell @cmd, NO_OUTPUT 

以上查询创建了CSV文件authors.CSV。但该文件的内容格式不正确。他们展示了一些垃圾数据。

我需要创建一个格式化的csv文件。

+2

输出是什么样的?什么是垃圾?什么是好的”? – gbn 2009-11-27 04:47:30

+0

确切地说 - 告诉我们**你得到了什么**,以及**你期望的是什么 - 我们需要看到三角洲以便能够帮助... – 2009-11-27 06:18:18

+0

它返回了大量的小方块和实际的线数据。记录也不是逐行显示的[即第一列在第一行,下一行是在csv文件后的几行。 – 2009-11-27 09:21:51

回答

0

您可以使用BCP,CLR,SSIS或DTS来做到这一点,因为您的示例BCP可能是最合适的。

BCP EwQMS370..msgages out c:\Authors.csv -c -t, -T –S<servername> 

您仍然可以通过你在你的例子同样的方式运行xp_cmdshell这一点;只有BCP才会为您完成CSV格式的繁重工作。 Booksonline将更详细地通过BCP。如果您需要从表格中选择较少的列,请创建一个视图来限制数据。

+0

谢谢。它的工作很好。我如何将第一行设置为列名[header]? – 2009-11-27 11:13:09

+0

这可能会帮助 http://weblogs.sqlteam.com/brettk/archive/2005/04/13/4395.aspx – u07ch 2009-11-27 15:12:51

相关问题