Puede convertir el "OID" a text
simplemente lanzando, siempre que el OID (identificador de objeto)
es en realidad un regtype
(el subtipo OID para tipos registrados) como lo obtendría de la función pg_typeof()
.
Postgres normalmente mostrará valores del tipo de datos regtype
como text
al usuario Ejemplo:
SELECT pg_typeof('2013-1-1'::date);
pg_typeof
-----------
date
Mientras que internamente es un OID:
SELECT pg_typeof('2013-1-1'::date)::oid;
pg_typeof
-----------
1082
Si tu cliente no hace lo mismo puedes forzarlo con un cast explícito:
SELECT pg_typeof('2013-1-1'::date)::text;
SELECT 1082::regtype::text;
Obtener tipos de todas las columnas del catálogo del sistema
No está claro cómo usted realmente recupera los tipos. Considere esta consulta para obtener información completa:
SELECT attname
, atttypid::regtype AS base_type
, format_type(atttypid, atttypmod) AS full_type
FROM pg_catalog.pg_attribute
WHERE attrelid = 'public.tbl'::regclass -- your table name here
AND attnum > 0
AND NOT attisdropped
ORDER BY attnum;
attname | base_type | full_type
------------+-----------------------------+-----------------------------
age_id | integer | integer
age | text | text
ageabk | character | character(2)
foo | boolean | boolean
log_up | timestamp without time zone | timestamp without time zone
Tenga en cuenta que format_type(..)
muestra el tipo, incluidos los modificadores.