我有一个问题。我的应用程序中有一个备份功能,下面是我进行转储的方法:
schema_command = (
f'PGPASSWORD={os.environ["POSTGRES_PASSWORD"]} '
f'pg_dump -U {os.environ["POSTGRES_USER"]} '
f'--schema-only -h {os.environ["DB_HOST"]} {os.environ["DB_NAME"]} > {schema_backup_file}'
)
subprocess.run(schema_command, shell=True, check=True)
data_command = (
f'PGPASSWORD={os.environ["POSTGRES_PASSWORD"]} '
f'pg_dump -U {os.environ["POSTGRES_USER"]} '
f'--data-only -h {os.environ["DB_HOST"]} {os.environ["DB_NAME"]} > {data_backup_file}'
)
subprocess.run(data_command, shell=True, check=True)
我还有一个恢复功能:
schema_restore_command = (
f'PGPASSWORD={os.environ["POSTGRES_PASSWORD"]} '
f'psql -U {os.environ["POSTGRES_USER"]} '
f'-h {os.environ["DB_HOST"]} -d {os.environ["DB_NAME"]} < {schema_backup_file}'
)
print(schema_restore_command)
subprocess.run(schema_restore_command, shell=True, check=True)
data_restore_command = (
f'PGPASSWORD={os.environ["POSTGRES_PASSWORD"]} '
f'psql -U {os.environ["POSTGRES_USER"]} '
f'-h {os.environ["DB_HOST"]} -d {os.environ["DB_NAME"]} < {data_backup_file}'
)
print(data_restore_command)
subprocess.run(data_restore_command, shell=True, check=True)
问题是我需要从转储中部分恢复数据。例如 - 我意外删除了一些数据库行,但我的表仍然充满内容。它不起作用。只有当表完全为空时它才有效。
我在创建数据转储时尝试了 --inserts 标志,我尝试在恢复之前清理数据库,它可以工作,但根据我的任务描述,它不应该这样工作