我一直在使用SSMS倾销相对较大的表。通常的方法是设置Query->Results-To->File
,'执行',选择一个文件并让SQL查询运行。完成后,我通常会压缩文件,然后将其传输到本地计算机。这有明显的问题,主机在夜间SQL查询期间空间不足。
我想知道是否有一种方法可以直接压缩SSMS的输出,而不必等到它从整个查询中转储结果。有什么建议?主机在允许我在其上运行的内容受到很大限制,因此建议只需要最少的第三方软件就可以了。
从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
(运行查询),否则这将无效。