stdin的即时压缩失败了吗?

时间:2011-07-24 03:04:53

标签: sql-server command-line compression gzip 7zip

根据建议here,我试图将输出从sqlcmd传输到7zip,以便在转储200GB数据库时节省磁盘空间。我尝试过以下方法:

> sqlcmd -S <DBNAME> -Q "SELECT * FROM ..." | .\7za.exe a -si <FILENAME>

即使我离开系统一整天,这似乎也不起作用。但是,以下工作:

> sqlcmd -S <DBNAME> -Q "SELECT TOP 100 * FROM ..." | .\7za.exe a -si <FILENAME>

甚至这一个:

> sqlcmd -S <DBNAME> -Q "SELECT * FROM ..."

当我删除pipe符号时,我可以看到结果,甚至可以在7小时内将其重定向到完成的文件中。

我不确定管道大量输出会发生什么,但是直到这一点我才能理解7zip似乎在创建存档文件之前等待消耗整个输入(因为我没有真的看到一个文件正在创建开始)所以我不确定它是否实际上正在执行即时压缩。所以我尝试了gzip,这是我的经验:

> echo "Test" | .\gzip.exe > test.gz
> .\gzip.exe test.gz
gzip: test.gz: not in gzip format

我不确定我是以正确的方式做这件事。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

哦,小男孩!一直是PowerShell!我不知道为什么至少使用gzip会发生这种情况。 Gzip一直抱怨输入不是gzip格式。我切换到正常的命令提示符,一切都开始工作了。

之前我确实观察过这一点。看起来|>在PowerShell和命令提示符中的功能略有不同。不确定究竟是什么,但如果有人知道,请在此处加入。