Tenho um problema. Tenho uma funcionalidade de backup no meu aplicativo. Aqui está como eu faço dumps:
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)
Também tenho uma funcionalidade de restauração:
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)
O problema é que preciso restaurar parcialmente os dados do dump. Por exemplo - eu acidentalmente deletei algumas linhas do banco de dados, mas minha tabela ainda está cheia de conteúdo. Não funciona. Funciona apenas quando a tabela está completamente vazia.
Eu tentei o sinalizador --inserts ao criar um despejo de dados. Tentei limpar meu banco de dados antes de restaurar, funcionou, mas não é assim que deveria funcionar de acordo com minha descrição de tarefa.