Vous n'êtes pas identifié(e).
Pages : 1
bonjour a tous
je débute en postgres et dans notre société on utilise ce petit script Shell pour faire l'opération du sauvegarde
psql -A -U postgres -t -c "\l" |grep -v template |awk -F'|' '{print "pg_dump -c --port=5432 --username=postgres "$Ft" >
ce que j'arrive pas a comprendre c'est la partie "pipe awk -F"
Qui a une idée a quoi sert ces options
merci
Hors ligne
Le -F permet de spécifier le délimiteur de champ.
Vous pourriez réécrire le tout avec quelquechose du genre :
for d in $(psql -AXtc "SELECT datname FROM pg_database WHERE datname NOT like '%template%'" -U postgres); do
echo "pg_dump of database $d..."
pg_dump -c --port=5432 -U postgres $d > ...
done
Quelques petites remarques cependant :
- il serait plus intéressant de filtrer sur "WHERE NOT datistemplate" que sur "le nom de la base contient template", voire encore mieux "WHERE datallowconn" pour sauvegarder toutes les bases sur lesquelles on peut se connecter
- vous ne sauvegardez pas les objets globaux, ce qui est problématique (regardez pg_dumpall -g)
- vous ne testez à priori aucun code retour
- vous pourriez utiliser --no-password par sécurité
- les options de connexion ne sont pas cohérentes entre les deux appels (le port est spécifié d'un coté et pas de l'autre)
Julien.
https://rjuju.github.io/
Hors ligne
Pages : 1