Estou tentando restaurar um despejo sem ter as funções apropriadas no banco de dados de recebimento.
Como mencionado aqui , mas também aqui , você precisa ter o --no-owner
como opção, em pg_dump
ou em pg_restore
ambos.
Eu usei a seguinte linha de comando para criar meu dump:
"C:\Program Files\PostgreSQL\9.3\bin\pg_dump.exe" --no-owner -Ft --dbname=postgresql://avo******:AV0******[email protected]:5432/BI_DB > K:\BI\backup\sort\bck_%timestamp%.tar
A linha de restauração é a seguinte:
"C:\Program Files\PostgreSQL\9.3\bin\pg_restore.exe" --host localhost --port 5432 --username "postgres" --dbname "BI_TEST2" --no-password --no-owner --role=postgres --exit-on-error --verbose "D:\D\avo\backup\bck_04042017_1410.tar"
Como você pode ver, ambos têm a --no-owner
opção, mas eventualmente, tenho o erro abaixo:
O que me incomoda terrivelmente é o log abaixo:
pg_restore: [programme d'archivage (db)] Erreur pendant le traitement de la TOC (« PROCESSING TOC ») :
pg_restore: [programme d'archivage (db)] Erreur à partir de l'entrée TOC 2633 ; 0 0 ACL adm avo******
pg_restore: [programme d'archivage (db)] could not execute query: ERREUR: role « avo****** » does not exist
Por que ele diz que precisa de uma função, mesmo que --no-owner
tenha sido especificado?
Perdi alguma coisa?
Estou rodando no Postgres 9.3
O erro ocorre ao
pg_restore
definir as ACLs: você pode usar--no-acl
para evitarGRANT
comandos.Com a
-Ft
opção empg_dump
, você pode pular funções e ACLs somente empg_restore
. Você também pode editar o catálogo com--list
se precisar de mais detalhes.Usando o PostgreSQL 12.4:
Aqui está um exemplo:
Os comandos a seguir exportam dados sem misturá-los com dados de função ou privilégio para que você possa importá-los para qualquer função que especificar. Além disso, você pode fazer o pg_dump compactar os dados em um arquivo tar para você.
Ou um mais curto para ele que faz a mesma coisa
Para restaurar, você usará quase os mesmos sinalizadores e também mencionará a qual função você deseja que a propriedade pertença.
Abaixo está o que todos esses sinalizadores significam e mais algumas opções adicionais, como nível de compactação ou formato de saída. Você pode encontrar mais fazendo
pg_dump --help
oupg_restore --help
: