将SSMS .rpt输出文件转换为.txt/.csv

Rel*_*ed1 50 sql-server ssms sql-server-2005 rpt character-encoding

我想将我的大型SSMS(SQL Server Management Studio)查询结果(2.5米行,9个字段)导出为.csv或逗号分隔的.txt(带标题).(MS SQL Server 2005 Management Studio.)

这样我就可以逐行读入VBA程序(对数据进行某些计算)或在Excel中对它进行查询(例如使用Microsoft Query).计算很复杂,我更喜欢在SSMS之外的其他地方进行.

如果我在SSMS中选择"查询结果到文本"和一个小答案(几行,例如高达200k),我当然可以简单地复制并粘贴到文本编辑器中.对于我在这里的大答案,我当然可以一次复制和粘贴200k左右的行10次,进入像Ultra-Edit这样的文本编辑器.(当我一次尝试所有2.5米时,我在SSMS内部得到了一个内存警告.)但是对于未来我想要一个更优雅的解决方案.

对于"查询结果到文件",SSMS始终写入.rpt文件.(右键单击结果窗口并选择"另存为"时,它会像上面一样给出内存错误.)

- >所以看起来我唯一的选择就是让SSMS将其结果输出到文件,即.rpt,然后将.rpt转换为.txt.

我假设这个.rpt是一个Crystal Reports文件?或者不是.我的电脑上没有Crystal Reports,因此无法使用它来转换文件.

在Ultra-Edit中打开.rpt时看起来很好.但是在Excel中的Microsoft Query中,标题不想显示.

当我简单地使用VBA读取和写入.rpt时,文件大小减半.(330meg至180meg).在Microsoft Query中,标题现在显示(尽管第一个字段名称有一个有趣的主角,这在我之前在其他完全不同的情况下发生过).我似乎能够在Excel中对它进行有意义的数据透视表.

但是当我在Ultra-Edit中打开这个新文件时,会显示中文字符!在某处还能有一些有趣的角色吗?

- >是否有可用的免费(和简单/安全)转换器应用程序.或者我应该相信这个.txt可以读入我的VBA程序.

谢谢

小智 61

简单方法:在SQL Server Management Studio中,转到"查询"菜单并选择"查询选项...">结果>文本>将"输出格式"更改为"逗号分隔".现在,运行您的查询以导出到文件,一旦完成将文件重命名.rpt.csv,它将在Excel中打开:).

  • 请注意,您需要打开一个新的查询选项卡才能使更改生效。 (2认同)

Sim*_*ier 22

这是我的解决方案.

  • 使用Microsoft SQL Server Management Studio
  • 将其配置为保存制表符分隔的.rpt文件:转到" 查询 ">" 查询选项 ">" 结果 ">" 文本 ">" 输出格式 ",然后选择" 制表符分隔 "(按OK)

在此输入图像描述

  • 现在,当您创建报告时,使用' Save With Encoding ... '菜单,然后选择' Unicode '(默认情况下,它是'UTF8')

在此输入图像描述

  • 您现在可以使用Excel打开文件,所有内容都在列中,没有转义或外来字符问题(请注意,由于unicode编码,文件可能会更大).


Rel*_*ed1 8

在朋友的帮助下,我找到了我的解决方案:Rpt文件是在MS SQL Server Management Studio中生成的纯文本文件,但是使用UCS-2 Little Endian编码而不是ANSI.

- >在Ultra-Edit选项'文件,转换选项,unicode到ASCII '就行了.文本文件从330meg减少到180mcg,Excel中的Microsoft Query现在可以看到列,VBA可以读取文件和进程行*.

Ps另一种选择是使用MS Access(可以处理大结果)并将ODBC连接到数据库.但是,我必须使用Jet-SQL,它的命令比MS SQL Server Management Studio的T-SQL少.显然,可以在MS Access 2007中将.adp创建一个新文件,然后将T-SQL用于SQL Server后端.但在MS Access 2010(在我的电脑上)这个选项似乎不再存在.


Pol*_*usB 7

您可以使用BCP

打开命令提示符,然后键入:

SET Q="select * from user1.dbo.table1"
BCP.EXE %Q% queryout query.out -S ServerName -T -c -t
Run Code Online (Sandbox Code Playgroud)
  • 您可以使用-U -P(而不是-T)进行SQL身份验证.
  • 您的应用与UNICODE有问题.您可以使用强制代码页-C {code page}.如有疑问,请尝试850.

  • -t 将强制选项卡作为字段分隔符,您可以将其更改为逗号 -t,

好的是你可以直接从你的VBA运行shell命令调用它.