Como obtenho o tipo de dados do campo específico da tabela no postgres? Por exemplo, eu tenho a tabela a seguir, student_details (número inteiro stu_id, stu_name varchar (30), registro de data e hora de join_date);
Neste usando o nome do campo / ou qualquer outra maneira, eu preciso obter o tipo de dados do campo específico. Existe alguma possibilidade?
postgresql
Nathan Villaescusa
fonte
fonte
Respostas:
Você pode obter tipos de dados no information_schema (8.4 documentos mencionados aqui, mas este não é um novo recurso):
fonte
where table_catalog = ? and table_schema = ? and table_name = ?;
Mas essa visualização information_schema não considera que o DDL possa ter usado domínios .pg_typeof
Você pode usar a função pg_typeof () , que também funciona bem para valores arbitrários.
fonte
SELECT pg_typeof( date_part( 'year', now() ) ) AS expr
provavelmente é diferente do que você esperaria.pg_typeof
funciona para campos que saem de procedimentos armazenados, para os quais a tabela de back-end, se existir, é desconhecida / pouco clara.select state, qstart, pg_typeof(qstart) as ty_qstart from listconn()
. information_schema não ajudaria muito aqui.Tente este pedido:
fonte
table_name = 'YOUR_TABLE' AND column_name = 'YOUR_FIELD';
corra
psql -E
e depois\d student_details
fonte
Se você gosta da solução 'Mike Sherrill', mas não deseja usar o psql, usei esta consulta para obter as informações ausentes:
com resultado:
fonte
As visualizações do esquema de informações e pg_typeof () retornam informações de tipo incompletas. Dessas respostas,
psql
fornece as informações de tipo mais precisas. (O OP pode não precisar de informações tão precisas, mas deve conhecer as limitações.)Usar
psql
e\d public.test
mostrar corretamente o uso do tipo de dadostest_domain
, o comprimento das colunas varchar (n) e a precisão e a escala das colunas numéricas (p, s).Esta consulta em uma visualização information_schema não mostra o uso de
test_domain
todos. Ele também não informa os detalhes das colunas varchar (n) e numéricas (p, s).Você pode obter todas essas informações ingressando em outras visualizações information_schema ou consultando diretamente as tabelas do sistema.
psql -E
pode ajudar com isso.A função
pg_typeof()
mostra corretamente o uso detest_domain
, mas não relata os detalhes das colunas varchar (n) e numéricas (p, s).fonte
Obter o tipo de dados
information_schema
é possível, mas não é conveniente (requer a junção de várias colunas a umacase
instrução). Como alternativa, pode-se usarformat_type
a função interna para fazer isso, mas funciona em identificadores de tipo interno que são visíveis,pg_attribute
mas não dentroinformation_schema
. ExemploCom base em https://gis.stackexchange.com/a/97834 .
fonte
b.relfilenode
comb.oid