U kunt de "OID" converteren naar text
door simpelweg te casten - mits de OID (Object Identifier)
is eigenlijk een regtype
(het OID-subtype voor geregistreerde typen) zoals je zou krijgen van de functie pg_typeof()
.
Postgres zal normaal gesproken waarden weergeven van het gegevenstype regtype
als text
aan de gebruiker. Voorbeeld:
SELECT pg_typeof('2013-1-1'::date);
pg_typeof
-----------
date
Terwijl het intern een OID is:
SELECT pg_typeof('2013-1-1'::date)::oid;
pg_typeof
-----------
1082
Als uw klant niet hetzelfde doet, kunt u het forceren met een expliciete cast:
SELECT pg_typeof('2013-1-1'::date)::text;
SELECT 1082::regtype::text;
Krijg typen van alle kolommen uit de systeemcatalogus
Het is onduidelijk hoe je haalt de typen daadwerkelijk op. Overweeg deze vraag om volledige informatie te krijgen:
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
Merk op dat format_type(..)
toont het type inclusief modifiers.