Sie können die "OID" in text
umwandeln durch einfaches Casting - vorausgesetzt der OID (Object Identifier)
ist eigentlich ein regtype
(der OID-Untertyp für registrierte Typen), wie Sie ihn von der Funktion pg_typeof()
.
Postgres zeigt normalerweise Werte des Datentyps regtype
an als text
an den Benutzer. Beispiel:
SELECT pg_typeof('2013-1-1'::date);
pg_typeof
-----------
date
Während es intern eine OID ist:
SELECT pg_typeof('2013-1-1'::date)::oid;
pg_typeof
-----------
1082
Wenn Ihr Client das nicht tut, können Sie es mit einem expliziten Cast erzwingen:
SELECT pg_typeof('2013-1-1'::date)::text;
SELECT 1082::regtype::text;
Typen aller Spalten aus dem Systemkatalog abrufen
Es ist unklar wie Sie rufen die Typen tatsächlich ab. Betrachten Sie diese Abfrage, um vollständige Informationen zu erhalten:
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
Beachten Sie, dass format_type(..)
zeigt den Typ einschließlich Modifikatoren an.