PostgreSQL désactiver la sortie de plus
Je suis en cours d'exécution d'un script sur mon serveur PostgreSQL:
psql db -f sql.sql
de bash
ou dans un cron
script.
Il continue d'essayer de paginer la sortie avec more
ou less
.
Comment puis-je désactiver le résultat de la pagination dans psql
?
Tout ce que je veux faire est de changer les données, je ne se soucient pas de toute sortie.
Vous devez vous connecter pour publier un commentaire.
Pour désactiver la pagination mais conserver la sortie, utilisez:
À se souvenir de ce paramètre, l'ajouter à votre ~/.psqlrc.
Voir le psql manuel.
Sur les anciennes versions de la page, c'était juste une bascule, de sorte
\pset pager
Pour supprimer complètement la sortie de la requête, utilisez
\o /dev/null
dans votrepsql
script.Pour supprimer
psql
's information de sortie, l'exécuter avec-q
ou un ensembleQUIET=1
dans l'environnement.Pour produire des résultats et de les jeter, vous pouvez rediriger
stdout
à/dev/null
avec:Vous pouvez rediriger les deux stdout et stderr avec:
mais je ne le recommande pas, comme il va jeter les informations d'erreur qui pourraient vous avertir de quelque chose ne va pas droit. Vous êtes également produire des résultats et de les jeter, ce qui est inefficace; vous êtes mieux de ne pas les produire en premier lieu par l'ajustement de vos requêtes.
PAGER="/dev/null" psql db -P pager=always -f sql.sql
pour le rendre toujours tuer de sortie.J'ai été à la recherche pour cela aussi, j'ai trouvé la manière d'un question similaire sur ServerFault:
désactive la pagination de la chose, sans supprimer de sortie.
bash, étant un shell, a 2 flux vous pouvez rediriger la sortie de données: stdout et stderr, parce que cette sortie doit être redirigé quelque part, linux a un "tout jeter" nœud accessible à travers /dev/null. Tout ce que vous envoyez, il y aura tout simplement disparaître dans le vide.
(coquilles ont également un flux d'entrée, mais je vais ignorer cette ici depuis que vous avez demandé la suppression de sortie)
Ces cours d'eau sont représentés par des chiffres: 1 pour la sortie standard (stdout) et 2 pour la sortie stderr.
Donc, si vous voulez juste rediriger stdout vous auriez du le faire avec le
<
et>
opérateurs (en gros, là où il est, où le flux de données)supposons que nous voulons supprimer stdout (redirection vers /dev/null):
psql db -f sql.sql > /dev/null
Comme vous pouvez le voir c'est stdout est par défaut, pas de numéro de flux a été utilisé
si vous souhaitez utiliser le nombre de flux que vous voulez écrire
psql db -f sql.sql 1> /dev/null
Maintenant, si vous souhaitez supprimer stderror (nombre de flux 2), vous pouvez utiliser
psql db -f sql.sql 2> /dev/null
Vous pouvez également rediriger un flux à un autre, par exemple stderror sur la sortie standard, ce qui est utile si vous souhaitez enregistrer les résultats quelque part, régulière et des erreurs.
psql db -f sql.sql 2>&1 > log.txt
vous l'esprit, il ne peut pas être des espaces entre
2>&1
Enfin et parfois plus intéressant est le fait que vous pouvez supprimer toutes les données de sortie en utilisant
&>
, pour quand vous le voulez "est parfaitement tranquille"psql db -f sql.sql &> /dev/null
Voici une autre option. Elle a l'avantage que vous n'avez pas à mémoriser psql option de noms, etc.