有没有一种直接压缩/打包 SQL 查询结果的方法?

3

最近我一直在使用SSMS导出相对较大的表。通常的方法是设置 查询->结果->文件,执行查询、选择一个文件并让SQL查询运行。等它完成后,我通常会将文件压缩,然后再传输到我的本地机器。这种方法显然存在问题,因为在过夜的SQL查询期间,主机可能会因空间不足而停止。

我想知道是否有一种方法可以直接压缩来自SSMS的输出,而无需等待其将整个查询结果放置到文件中。有什么建议吗?主机对于允许我在其上运行的软件非常受限,因此需要尽量少的第三方软件建议。

1个回答

8
请使用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(只执行查询),否则此方法将无法正常工作。


+1 - 正是我打算建议的(sqlcmd + 命令行压缩)。 - undefined
1
非常感谢您的建议。我在您的回答中添加了一些信息。希望您不会介意。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接