1

根据这里的建议,我试图将输出从管道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

我不确定我这样做的方式是否正确。有什么建议么?

4

1 回答 1

1

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

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

于 2011-07-24T04:18:01.847 回答