有没有办法直接压缩/压缩SQL查询的结果?

时间:2011-07-23 06:01:53

标签: sql sql-server database sql-server-2008 ssms

我很晚才使用SSMS转储相对较大的表。通常的方法是设置Query->Results-To->File,'执行',选择一个文件并让SQL查询运行。完成后,我通常会压缩文件,然后将其传输到本地计算机。这有明显的问题,主机在夜间SQL查询期间空间不足。

我想知道是否有办法直接压缩SSMS的输出而不必等到它从整个查询中转储结果。有什么建议?主机在允许我在其上运行的内容方面受到很大限制,所以建议只需要最少的第三方软件就可以了。

1 个答案:

答案 0 :(得分:7)

sqlcmd运行查询,并将输出通过管道传输到命令行zip(您需要安装一个,请参阅What's a good tar utility for Windows?)。或者您可以使用开箱即用的PowerShell,包括管道输入,请参阅Compress Files with Windows PowerShell then package a Windows Vista Sidebar Gadget,这不需要额外的工具,因为PS已经在您的主机服务器上(尽管在第二次阅读时我认为PS解决方案,如在链接中,仍然需要首先放弃文件,不能压缩文件)。

使用sqlcmd和7zip的示例查询:

sqlcmd -S <DATABASE> -s <COLUMNSEP> -Q "SELECT ..." | .\7za.exe a -si <FILENAME>

请记住使用-Q(运行查询并退出)而不是-q(运行查询),否则这将无效。