我有一个制作 PostgreSQL 备份的程序,并让用户有机会压缩这些备份:
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)
现在,我正在使用 pg_restore 来恢复它们,但如果文件被压缩,我就无法做到这一点。有什么方法可以直接使用 pg_restore(如 pg_dump 或 pg_dumpall)来完成,还是我必须检查使用的压缩类型并用 Python 解压缩它们?