sql >> Database >  >> RDS >> PostgreSQL

Hoe vertaal ik PostgreSQL OID met python

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.




  1. Dubbele aanhalingstekens vervangen door dubbele aanhalingstekens in R

  2. Caching in JDBC

  3. Waarom ongeldige conversie aangevraagd FOUTCODE:17132?

  4. postgresql join 2 tabellen