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