j'avais un programme qui fait des sauvegardes de PostgreSQL, et donne à l'utilisateur la possibilité de zipper ces sauvegardes:Existe-t-il un moyen de décompresser automatiquement avec pg_restore?
if bkp_type == 'gz':
command = 'pg_dumpall -U {} -h {} -p {} | gzip > {}'.format(user, server, port, file)
elif bkp_type == 'bz2':
command = 'pg_dumpall -U {} -h {} -p {} | bzip2 > {}'.format(user, server, port, file)
elif bkp_type == 'zip':
command = 'pg_dumpall -U {} -h {} -p {} | zip > {}'.format(user, server, port, file)
else:
command = 'pg_dumpall -U {} -h {} -p {} > {}'.format(user, server, port, file)
result = subprocess.call(command, shell=True)
Maintenant, je me sers pg_restore pour les restaurer, mais je ne suis pas en mesure de le faire si le fichier est compressé. Y at-il un moyen de le faire directement avec pg_restore (comme dans pg_dump ou pg_dumpall) ou dois-je vérifier le type de compression utilisé et décompresser avec Python?
Je vous pouvez faire un programme à la conduite d'un fichier de vidage dans un programme zip, pourquoi pas faire simplement un programme qui décompresse un fichier et l'envoie dans pg_restore? – Patrick
J'ai essayé avec un exemple de fichier zip: unzip | pg_restore -U my_user -h mon_serveur -p mon_port -d chemin new_dbname, me donne l'erreur pg_restore: [archiver] le fichier d'entrée ne semble pas être une archive valide – forvas
Pouvez-vous décompresser dans un fichier normal et mettre à jour votre message pour montrer le début du fichier de vidage? Vous pouvez avoir des problèmes avec les versions PG ou les formats de fichiers, difficile à dire sans aucune preuve. – Patrick