Fiz o backup do meu banco de dados:
-bash-4.2$ pg_dump -d mydb --format=custom -f /tmp/dump
-bash-4.2$
Abaixo verifiquei e vi minhas funções lá:
-bash-4.2$ pg_restore -l /tmp/dump | grep -i addconf
233; 1255 39949 FUNCTION public addconfiguration(text) mydb
247; 1255 39950 FUNCTION public addconfiguration2(text) mydb
273; 1255 39951 FUNCTION public addconfiguration3(text) mydb
Então tentei restaurar uma função usando as instruções do Postgres pg_restore :
-bash-4.2$ pg_restore -d postgres --function=addconfiguration2(text) -v /tmp/dump
-bash: syntax error near unexpected token `('
Eu também tentei sem os parênteses e o argumento, mas não funcionou:
-bash-4.2$ pg_restore -d postgres --function=addconfiguration2 -v /tmp/dump
pg_restore: connecting to database for restore
pg_restore: implied data-only restore
Após as tentativas verifiquei se a função foi criada \df
dentro do psql, mas sem sucesso.
Como eu poderia restaurar funções usando pg_restore?
O parêntese é especial para o shell. Você não precisa removê-lo, você precisa citá-lo/escapá-lo para que ele passe pelo shell.