1) Porque ./psql ao invés de psql ? Tem que estar no mesmo diretório do psql? 2) A partir de que versão funciona?
Em 18 de julho de 2012 11:22, Matheus de Oliveira <matioli.math...@gmail.com > escreveu: > > -- > Matheus de Oliveira > > Bacharelado em Ciências de Computação > Laboratório de Computação de Alto Desempenho - > LCAD<http://www.lcad.icmc.usp.br/> > Instituto de Ciências Matemáticas e de Computação - > ICMC<http://www.icmc.usp.br/> > Universidade de São Paulo - USP <http://www.sc.usp.br/> > > > > > 2012/7/18 Matheus de Oliveira <matioli.math...@gmail.com> > >> >> >> 2012/7/18 Alexsander Rosa <alexsander.r...@gmail.com> >> >>> Hoje eu coloco no SVN um "pg_dump" com a estrutura do BD >>> (--schema-only). Cada vez que preciso mexer numa procedure tenho que >>> selecionar a procedure desejada, copiar e colar em algum editor, >>> acrescentar o "OR REPLACE" depois do CREATE e só então começar a fazer >>> alguma coisa. E depois de pronta, a procedure só entra no SVN via o >>> "pg_dump" seguinte. >> >> >> Para isso você pode usar o "\ef" do psql, que já faz isso pra você, é só >> selecionar o editor (e.g. "export EDITOR=vim") e executar: >> >> \ef <nome da função> >> >> >>> Eu gostaria que houvesse uma opção no "pg_dump" tipo >>> "--procedures-in-separate-files" que gerasse o DUMP sem as procedures; >>> estas, por sua vez, seriam gravadas em arquivos individuais chamados >>> "nome-da-procedure.sql" já com o "OR REPLACE" adicionado. Existe alguma >>> ferramenta que faça isso? >>> >>> >> Não sei se tem algo assim pronto, mas não é difícil fazer se você aliar a >> tabela pg_proc e a função pg_get_functiondef. >> Exemplo: >> >> SELECT pg_get_functiondef(oid) FROM pg_proc WHERE proname = '<nome da >> função>' >> >> Veja que o retorno será mais de uma linha se a função estiver >> sobrecarregada. >> >> > Fiz um pequeno shell script pra isso. Vai ser útil pra mim também: > > #!/bin/bash > > ./psql $@ -A -t -F '|' -c " > SELECT quote_ident(n.nspname) || '.' || quote_ident(p.proname) || '.' || > ROW_NUMBER() OVER(PARTITION BY n.nspname,p.proname) || '.sql', p.oid FROM > pg_proc p JOIN pg_namespace n ON n.oid = p.pronamespace WHERE NOT > p.proisagg AND n.nspname NOT LIKE 'pg_%' AND n.nspname <> > 'information_schema' ORDER BY n.nspname, p.proname, p.oid; > " | while read LN; do > ./psql $@ -A -t -c "SELECT pg_get_functiondef(`echo $LN | cut -d '|' > -f 2`)" > `echo $LN | cut -d '|' -f 1` > done > > Uso: > > - salvar o texto acima num arquivo chamado "get_functions.sh" (ou > qualquer outro nome). > - executar: > chmod a+x get_functions.sh > - chamar o script da mesma forma como chamaria o psql. Exemplo: > /path/to/get_functions.sh -h <host> -p <porta> -U <usuário> <banco> > - serão gerados arquivos seguindo o modelo <schema>.<func > name>.<id>.sql no diretório corrente (id é um identificador simples e > sequencial, um para cada função sobrecarregada, se não tiver sobrecarga > será só 1). > > > Mais fácil que isso impossível...=P > > > Atenciosamente, > -- > Matheus de Oliveira > > > _______________________________________________ > pgbr-geral mailing list > pgbr-geral@listas.postgresql.org.br > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > > -- Atenciosamente, Alexsander da Rosa
_______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral