pg_restore 输入文件似乎是文本格式转储。请使用 psql
pg_restore input file appears to be a text format dump. Please use psql
我有一个 Ansible 任务,它将在 postgresql 数据库中加载一个数据库转储文件。
name: Apply prod dump file
become_user: postgres
shell: "PGPASSWORD={{ db_password }} psql -h localhost -d {{ db_name }} -U {{ db_user }} -f {{ server_path }}/dump.sql"
when: run_db_restore is defined and run_db_restore
tags: django.restore
问题是转储文件包含 CREATE ROLE 和 CREATE DATABASE 部分,我不想这样做,因为它会覆盖我用 Ansible 创建的进程,所以我想预制
pg_restore --no-owner --data-only
在 sql 文件上,所以我只能创建表和导入数据。问题是我该如何解决
psql -h localhost -d {{ db_name }} -U {{ db_user }} -f {{ server_path }}/dump.sql
这样我就可以正常导入数据库中的数据了。
这个函数
pg_restore --no-owner --data-only -U admin -d database dump.sql
给我看
pg_restore: [archiver] input file appears to be a text format dump. Please use psql.
除非您先编辑 SQL 文件,否则您无法执行此操作,这是一项自动完成的具有挑战性且容易出错的任务。
我建议您更改程序并改用自定义格式转储。然后你可以用pg_restore
恢复它们,只恢复你需要的部分。
既然你说你在转储中有用户,看来你是用 pg_dumpall
创建的。如果您不想让用户在那里,请不要这样做。
我有一个 Ansible 任务,它将在 postgresql 数据库中加载一个数据库转储文件。
name: Apply prod dump file
become_user: postgres
shell: "PGPASSWORD={{ db_password }} psql -h localhost -d {{ db_name }} -U {{ db_user }} -f {{ server_path }}/dump.sql"
when: run_db_restore is defined and run_db_restore
tags: django.restore
问题是转储文件包含 CREATE ROLE 和 CREATE DATABASE 部分,我不想这样做,因为它会覆盖我用 Ansible 创建的进程,所以我想预制
pg_restore --no-owner --data-only
在 sql 文件上,所以我只能创建表和导入数据。问题是我该如何解决
psql -h localhost -d {{ db_name }} -U {{ db_user }} -f {{ server_path }}/dump.sql
这样我就可以正常导入数据库中的数据了。
这个函数
pg_restore --no-owner --data-only -U admin -d database dump.sql
给我看
pg_restore: [archiver] input file appears to be a text format dump. Please use psql.
除非您先编辑 SQL 文件,否则您无法执行此操作,这是一项自动完成的具有挑战性且容易出错的任务。
我建议您更改程序并改用自定义格式转储。然后你可以用pg_restore
恢复它们,只恢复你需要的部分。
既然你说你在转储中有用户,看来你是用 pg_dumpall
创建的。如果您不想让用户在那里,请不要这样做。