Existe uma solução muito mais simples caminho no PostgreSQL para obter o tipo de uma coluna.
SELECT pg_typeof(col)::text FROM tbl LIMIT 1
A tabela deve conter pelo menos uma linha, é claro. E você só obtém o tipo base sem modificadores de tipo (se houver). Use a alternativa abaixo se precisar também.
Você também pode usar a função para constantes. O manual sobre
pg_typeof()
. Para uma tabela vazia (ou qualquer outra), você pode consultar o catálogo do sistema
pg_attribute
para obter a lista completa de colunas e seus respectivos tipos em ordem:SELECT attnum, attname AS column, format_type(atttypid, atttypmod) AS type
FROM pg_attribute
WHERE attrelid = 'myschema.mytbl'::regclass -- optionally schema-qualified
AND NOT attisdropped
AND attnum > 0
ORDER BY attnum;
O manual sobre
format_type()
e em tipos de identificador de objeto
como regclass
.