Question

De ce qui a été suggéré ici , je suis en train de diriger la sortie de sqlcmd à 7zip afin que je puisse économiser de l'espace disque lors du vidage d'une base de données 200GB. Je l'ai essayé ce qui suit:

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

Cela ne semble pas fonctionner même quand je quitte le système pour une journée entière. Cependant, les travaux suivants:

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

et même celui-ci:

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

Lorsque je supprime le symbole de pipe, je peux voir les résultats et peut même rediriger vers un fichier dans les finitions en 7 heures.

Je ne sais pas ce qui se passe avec la tuyauterie grande quantité de la production, mais ce que je pouvais comprendre jusqu'à ce point est que 7zip semble attendre de consommer toute entrée avant de créer un fichier d'archive (parce que je ne vraiment voir un fichier créé pour commencer) donc je ne suis pas sûr si elle exécute réellement en compression à la volée. J'ai donc essayé gzip et voici mon expérience:

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

Je ne suis pas sûr que je fais cela dans le bon sens. Toutes les suggestions?

Était-ce utile?

La solution

Oh boy! Il était PowerShell tout le long! Je ne sais pas pourquoi cela se produit au moins avec gzip. Gzip se plaignait que l'entrée était pas au format gzip. Je suis passé à la commande normale rapide et tout commencé à travailler.

J'ai observé auparavant. On dirait | et > ont une fonctionnalité légèrement différente dans PowerShell et Invite de commandes. Je ne sais pas ce qu'il est exactement, mais si quelqu'un le sait, s'il vous plaît ajouter ici.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top