On Dec 14, 2007 8:07 PM, Marcelo Costa <[EMAIL PROTECTED]> wrote:
>
>  Carla Mazzi escreveu:
> Boa Tarde!
>
>  Gostaria de uma ajuda, estou precisando descobrir em quais bancos de dados
> eu possuo determinada tabela, existe algum comando para fazer isso?
>  Oi Carla, veja se este select te atende....
>
>  SELECT n.nspname, c.relname, a.attname, format_type(t.oid, null) AS typname
>    FROM pg_namespace n, pg_class c,
>         pg_attribute a, pg_type t
>    WHERE n.oid = c.relnamespace

<corte>

Para localizar informações desse tipo existe o information_schema
(conforme citado pelo Leandro). Utilizando o catalogo poupa voce de
futuras dores de cabeça quando por exemplo houver alguma alteração
estrutural em tabelas do sistema em versõs futuras. As views do
catalogo deverão permanecer com o máximo de compatibilidade entre
versões (segundo padrão SQL).

Além de ser mais simples:

SELECT *
   FROM information_schema.tables
WHERE table_name = 'foobar';

Infelizmente não possuimos referencias a outros banco de dados
(banco.schema.tabela), portanto o comando deverá ser executado em
todos seus bancos para localizar a tabela ou um programeta bash
parecido com isso:

$ ARG=$1 || "foo" && for DATABASE in `psql -U postgres -c "\l" \
                             | cut -d"|" -f1 | egrep '^(\ [a-z])'`
do
     psql -U postgres -d $DATABASE -Atc \
     "SELECT 'O banco de dados $DATABASE possui a tabela: $RG'
         FROM information_schema.tables
       WHERE table_name = '$ARG'";
done;

Abraço!

-Leo
-- 
Leonardo Cezar, et all
http://www.postgresql.org.br
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a