Du kan konvertera "OID" till text
genom att helt enkelt casta - förutsatt OID (Object Identifier)
är faktiskt en regtyp
(OID-undertypen för registrerade typer) som du skulle få från funktionen pg_typeof()
.
Postgres kommer normalt att visa värden av datatypen regtype
som text
till användaren. Exempel:
SELECT pg_typeof('2013-1-1'::date);
pg_typeof
-----------
date
Medan det internt är en OID:
SELECT pg_typeof('2013-1-1'::date)::oid;
pg_typeof
-----------
1082
Om din klient inte gör detsamma kan du tvinga fram den med en explicit roll:
SELECT pg_typeof('2013-1-1'::date)::text;
SELECT 1082::regtype::text;
Hämta typer av alla kolumner från systemkatalogen
Det är oklart hur du faktiskt hämtar typerna. Överväg den här frågan för att få fullständig information:
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
Observera att format_typ(..)
visar typen inklusive modifierare.