【发布时间】:2012-05-19 06:30:34
【问题描述】:
我想将我的大型 SSMS (SQL Server Management Studio) 查询结果(2.5m 行,9 个字段)导出为 .csv 或逗号分隔的 .txt(带标题)。 (MS SQL Server 2005 管理工作室。)
这样我就可以将其逐行读入 VBA 程序(对数据进行某些计算)或在 Excel 中对其进行查询(例如使用 Microsoft Query)。计算很复杂,我更喜欢在 SSMS 以外的地方进行计算。
如果我在 SSMS 中选择“查询结果到文本”和一个小答案(几行,例如高达 200k),我当然可以简单地复制并粘贴到文本编辑器中。对于我在这里的大答案,我当然可以一次复制并粘贴 200k 左右的行,10 次,到像 Ultra-Edit 这样的文本编辑器中。 (当我一次尝试所有 2.5m 时,我在 SSMS 中收到内存警告。)但是对于未来,我想要一个更优雅的解决方案。
对于“查询结果到文件”,SSMS 始终写入 .rpt 文件。 (当您在结果窗口中右键单击并选择“另存为”时,会出现如上所示的内存错误。)
--> 所以看起来我唯一的选择是让 SSMS 将其结果输出到一个文件,即 .rpt,然后将 .rpt 转换为 .txt。
我假设这个 .rpt 是一个 Crystal Reports 文件?或者不是。我的电脑上没有 Crystal Reports,所以我不能用它来转换文件。
在 Ultra-Edit 中打开 .rpt 时,它看起来不错。但是在 Excel 中的 Microsoft Query 中,标题不想显示。
当我使用 VBA 简单地读取和写入 .rpt 时,文件大小减半。 (330 至 180 毫克)。在 Microsoft Query 中,现在确实显示了标题(尽管第一个字段名称有一个有趣的前导字符,这在我之前在其他完全不同的情况下发生过)。我似乎确实能够在 Excel 中对其进行有意义的数据透视表。
但是,当我在 Ultra-Edit 中打开这个新文件时,它显示的是汉字!会不会在某个地方还有一些有趣的角色?
--> 是否有免费(简单/安全)的转换器应用程序可用。或者我应该相信这个 .txt 文件可以很好地读入我的 VBA 程序。
谢谢
【问题讨论】:
-
我想知道为什么你想要输出这么多行,而你只想进一步查询数据?无需输出文本即可使用 Access 或 Excel 和 SQL Server。此外,如果 SQL Server 本身非常擅长查询的话。
-
嗨,这是因为我想通过程序代码运行数据,这种程序代码的“处理”风格比“查询”风格。换句话说,读取多个输入文件(该文件只是其中一个),执行多个过程/函数,然后写入多个输出文件。我只是使用 VBA,因为我喜欢用于输入运行参数的电子表格界面。我可以用其他编程语言代替它,我的问题也是一样的。
-
我知道 T-SQL 本身可以很好地执行过程等,我只是更喜欢本质上有点不同的编程语言。附:我现在实际上已经意识到,我可以做的是:代替 SSMS,将 T-SQL 粘贴到 Excel 中并从同一个数据库中执行它,但使用 VBA 代码。然后我可以更轻松地将输出直接写入文本文件(最后)......
-
...数据透视表等只是对总体数据的性质进行初步检查,然后再对其进行实际的主要运行。
-
(仅针对该线程的新读者... .rpt 扩展名与 Crystal Reports 文件相同只是巧合。这里 SMSS 编写的 .rpt 是这些文件的扩展名文本文件)
标签: sql-server sql-server-2005 character-encoding ssms rpt