1

hereで提案されたことから、200GBのデータベースをダンプするときにディスク容量を節約できるように、sqlcmdからの出力をパイプしようとしています。7zip私は次のことを試しました:

> 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 に答える