Sql para selecionar nomes de tabelas e colunas no postgres

Um simples sql para quem quer buscar colunas e tabelas no Postgres

select 
c.relname,
a.attname as "Column",
pg_catalog.format_type(a.atttypid, a.atttypmod) as "Datatype"
 
from pg_catalog.pg_attribute a 
inner join pg_stat_user_tables c on a.attrelid = c.relid
WHERE
a.attnum > 0 AND
NOT a.attisdropped
order by c.relname, a.attname

    • Igor
    • 16 abril, 2010

    Cara, esse select salvou minha vida!

    NUNCA ia conseguir fazer isso sozinho, vlw mano
    agora vou fazer uma rotininha de atualizacao de banco de dados

    • =D fico feliz em ter ajudado, poste sua rotina pra ajudar os demais caso seja interessante =]

    • Igor
    • 2 junho, 2010

    Entao.. fiz a rotina, mas eh em delphi…

    o meu sql ficou assim:

    select
    c.relname as tabela,
    a.attname as coluna,
    d.adsrc as default,
    pg_catalog.format_type(a.atttypid, a.atttypmod) as tipo
    from pg_catalog.pg_attribute a
    inner join pg_stat_user_tables c on a.attrelid = c.relid
    left join pg_catalog.pg_attrdef d on d.adrelid = c.relid and a.attnum = d.adnum
    WHERE a.attnum > 0 AND NOT a.attisdropped
    order by c.relname, a.attname

    andei fuçando um pokinho mais nas funcoes do pg
    Usei tbm o seguinte para os sequences:

    SELECT relname as sequence from pg_class where relkind=’S’ ;

    pois no meu bd tem muitos sequences (especialmente se vc usa o tipo serial – auto incremento)

    Uma vez que eu tenho os sequences, tabelas, colunas, tipos e defaults teoricamente posso re-construir o banco de dados.
    É claro que falta as functions/triggers e tal, mas nem uso, entao nao me interessei em saber.
    Dai eu pego um banco mais atual que eu tenho e outro para ser atualizado. Rodo os sql e vejo quais sequences tem no novo e no velho nao, crio estes. Depois vejo quais campos tem no novo e no velho nao e os crio tbm, prestando atencao para se ele nao encontrou a tabela entao ele a cria vazia, antes de criar os campos.

    falta só fazer testes para se o tipo ou o default do campo foi alterado, dai terei de alterar no banco velho, mas isso fica mais para frente

    • Yueh
    • 7 julho, 2010

    Meu amigo, MUITO OBRIGADO!
    Já tenho até uma biblioteca desses scripts extremamente úteis. Mais um pra coleção.
    MUITO OBRIGADO MESMO!

  1. Nenhum trackbacks ainda.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Sair / Alterar )

Imagem do Twitter

You are commenting using your Twitter account. Sair / Alterar )

Foto do Facebook

You are commenting using your Facebook account. Sair / Alterar )

Connecting to %s

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.