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中打开:).
Sim*_*ier 22
这是我的解决方案.
在朋友的帮助下,我找到了我的解决方案: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(在我的电脑上)这个选项似乎不再存在.
您可以使用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命令调用它.
| 归档时间: |
|
| 查看次数: |
80991 次 |
| 最近记录: |