sql >> Databáze >  >> RDS >> PostgreSQL

Jak přeložím PostgreSQL OID pomocí pythonu

"OID" můžete převést na text pouhým přetypováním – za předpokladu OID (Identifikátor objektu) je ve skutečnosti regtype kód> (podtyp OID pro registrované typy), jako byste získali z funkce pg_typeof() .

Postgres normálně zobrazí hodnoty datového typu regtype jako text uživateli. Příklad:

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

Zatímco interně je to OID:

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

Pokud váš klient neudělá totéž, můžete to vynutit explicitním obsazením:

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

Získejte typy všech sloupců ze systémového katalogu

Není jasné, jak ve skutečnosti získáte typy. Chcete-li získat úplné informace, zvažte tento dotaz:

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

Upozorňujeme, že format_type(..) zobrazí typ včetně modifikátorů.




  1. Jak používat date_format při použití JPQL/JPA

  2. Spočítejte počet prvků v řetězci odděleném čárkami v Oracle

  3. SSIS ForEach smyčka - změna připojení uvnitř smyčky for

  4. MySQL, Chyba 126:Nesprávný soubor klíče pro tabulku