sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvordan oversætter jeg PostgreSQL OID ved hjælp af python

Du kan konvertere "OID" til tekst ved blot at caste - forudsat OID (Object Identifier) er faktisk en regtype (OID-undertypen for registrerede typer), som du ville få fra funktionen pg_typeof() .

Postgres vil normalt vise værdier af datatypen regtype som tekst til brugeren. Eksempel:

SELECT pg_typeof('2013-1-1'::date);
 pg_typeof
-----------
 date

Mens det internt er en OID:

SELECT pg_typeof('2013-1-1'::date)::oid;
 pg_typeof
-----------
      1082

Hvis din klient ikke gør det samme, kan du tvinge den med en eksplicit cast:

SELECT pg_typeof('2013-1-1'::date)::text;
SELECT 1082::regtype::text;

Hent typer af alle kolonner fra systemkataloget

Det er uklart hvordan du faktisk henter typerne. Overvej denne forespørgsel for at få fuld 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

Bemærk, at format_type(..) viser typen inklusive modifikatorer.




  1. Hvordan kan jeg starte og tjekke min MySQL-log?

  2. mysql tæller forekomster af speciel karakter i et felt

  3. Forsøger at konstruere PostgreSQL-forespørgsel for at udtrække fra JSON en tekstværdi i et objekt, i et array, i et objekt, i et array, i et objekt

  4. Opret forbindelse til to databaser