Re: [pgbr-geral] Informações das tabelas

2012-10-22 Por tôpico Ronei Heck
Veja se esta consulta te ajuda:

SELECT
ordinal_position,
table_schema,
table_name,
column_name,
CASE
WHEN data_type = 'numeric' AND COALESCE(numeric_precision,0)  0 THEN
CASE WHEN COALESCE(numeric_scale,0)  0 THEN
data_type || '(' || numeric_precision::BPCHAR || ',' ||
numeric_scale::BPCHAR || ')'
ELSE
data_type || '(' || numeric_precision::BPCHAR || ')'
END
WHEN COALESCE(character_maximum_length,0)  0 THEN
data_type || '(' || character_maximum_length::BPCHAR || ')'
ELSE
data_type
END AS data_type,
is_nullable
FROM
information_schema.columns
ORDER BY
table_schema,
table_name,
ordinal_position

Perfeito, Tiago, é isso mesmo que preciso.

Em relação às CONSTRAINTs e os INDEXs, tem como obter?

Muito obrigado.

Ronei

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Informações das tabelas

2012-10-22 Por tôpico Ronei Heck

É possível sim. Da uma olhada nas tabelas/views de sistema e se você quebrar 
um pouquinho a cabeça chega na resposta. O Tiago já deu uma boa ajuda ;) 

Bom, quebrei a cabeça e consegui o que precisava com os seguintes comandos:
SELECT 
ordinal_position,column_name,data_type,character_maximum_length,numeric_precision,numeric_scale,is_nullable
 FROM information_schema.columns WHERE table_schema='public' AND 
table_name='brindes' ORDER BY ordinal_position

  1;codigo_empresa;integer;;32;0;NO
  2;numero_lancto;integer;;32;0;NO
  3;empresa_cliente;integer;;32;0;YES
  4;codigo_cliente;integer;;32;0;YES
  5;data_lancto;integer;;32;0;YES
  6;data_lancto_formatada;character varying;10;;;YES
  7;hora_lancto;integer;;32;0;YES
  8;hora_lancto_formatada;character varying;10;;;YES
  9;observacao;character varying;100;;;YES
  10;codigo_produto;numeric;;14;0;YES
  11;codigo_tabela;integer;;32;0;YES
  12;codigo_grade;integer;;32;0;YES
  13;quantidade;numeric;;14;3;YES
  14;preco_unitario;numeric;;14;5;YES
  15;preco_total;numeric;;14;2;YES
  16;usuario;integer;;32;0;YES

select constraint_name,constraint_type from 
information_schema.table_constraints where constraint_schema='public' and 
constraint_type'CHECK' and table_name='cadastro_clientes_fotos'

  a041_empresa_cliente_empresa_foto;PRIMARY KEY
  r041_empresa_cliente_a009;FOREIGN KEY

select column_name from information_schema.key_column_usage where 
constraint_schema='public' and 
constraint_name='a041_empresa_cliente_empresa_foto'

  empresa_cliente
  codigo_cliente
  codigo_empresa
  numero_foto

select column_name from information_schema.key_column_usage where 
constraint_schema='public' and constraint_name='r041_empresa_cliente_a009'

  empresa_cliente
  codigo_cliente

select table_name,column_name from information_schema.constraint_column_usage 
where constraint_schema='public' and constraint_name='r041_empresa_cliente_a009'

  cadastro_clientes;codigo_empresa
  cadastro_clientes;codigo_cliente

select indexname from pg_indexes where schemaname='public' and 
tablename='brindes'

  a040_empresa_lancto
  a040_empresa_cliente
  a040_empresa_data_lancto
  a040_produto_tabela_grade

select a.oid,a.relname,b.indkey from pg_class a JOIN pg_index b ON 
b.indexrelid=a.oid where a.relname='a040_produto_tabela_grade'

  1390449;a040_produto_tabela_grade;10 11 12

Confere?

Att.

Ronei Heck
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] Informações das tabelas

2012-10-21 Por tôpico Ronei Heck
Olá, pessoal,

Com este comando:

SELECT ordinal_position,column_name,data_type FROM information_schema.columns 
WHERE table_schema='public' AND table_name='brindes' order by ordinal_position

Eu consigo obter o nome e o tipo das colunas de uma tabela. Tem como obter o 
tamanho, os decimais e se o campo é not null?

Preciso também obter informações dos índices e dos relacionamentos da tabela.

Muito obrigado.

Ronei Heck
Clarion 6.1
Postgres 9.1
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral