Hay una mucho más sencilla en PostgreSQL para obtener el tipo de una columna.
SELECT pg_typeof(col)::text FROM tbl LIMIT 1
La tabla debe contener al menos una fila, por supuesto. Y solo obtiene el tipo base sin modificadores de tipo (si los hay). Use la alternativa a continuación si también la necesita.
También puede usar la función para constantes. El manual en pg_typeof()
.
Para una tabla vacía (o cualquier otra), puede consultar el catálogo del sistema pg_attribute
para obtener la lista completa de columnas y su respectivo tipo en orden:
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;
El manual en format_type()
y en tipos de identificadores de objetos
como regclass
.