Você pode converter o "OID" para
texto
simplesmente transmitindo - desde o OID (Identificador de Objeto)
é na verdade um regtype
(o subtipo OID para tipos registrados) como você obteria da função pg_typeof()
. O Postgres normalmente exibirá valores do tipo de dados
regtype
como texto
ao usuário. Exemplo:SELECT pg_typeof('2013-1-1'::date);
pg_typeof
-----------
date
Enquanto internamente é um OID:
SELECT pg_typeof('2013-1-1'::date)::oid;
pg_typeof
-----------
1082
Se o seu cliente não fizer o mesmo, você pode forçá-lo com um cast explícito:
SELECT pg_typeof('2013-1-1'::date)::text;
SELECT 1082::regtype::text;
Obter tipos de todas as colunas do catálogo do sistema
Não está claro como você realmente recupera os tipos. Considere esta consulta para obter informações completas:
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
Observe que
format_type(..)
exibe o tipo incluindo modificadores.