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

Jak získat dotaz na atributy sloupců z názvu tabulky pomocí PostgreSQL?

Zde je dotaz na systémový katalog, který by měl načíst vše, co potřebujete (s bonusovým polem primárního klíče zdarma).

SELECT DISTINCT
    a.attnum as num,
    a.attname as name,
    format_type(a.atttypid, a.atttypmod) as typ,
    a.attnotnull as notnull, 
    com.description as comment,
    coalesce(i.indisprimary,false) as primary_key,
    def.adsrc as default
FROM pg_attribute a 
JOIN pg_class pgc ON pgc.oid = a.attrelid
LEFT JOIN pg_index i ON 
    (pgc.oid = i.indrelid AND i.indkey[0] = a.attnum)
LEFT JOIN pg_description com on 
    (pgc.oid = com.objoid AND a.attnum = com.objsubid)
LEFT JOIN pg_attrdef def ON 
    (a.attrelid = def.adrelid AND a.attnum = def.adnum)
WHERE a.attnum > 0 AND pgc.oid = a.attrelid
AND pg_table_is_visible(pgc.oid)
AND NOT a.attisdropped
AND pgc.relname = 'TABLE_NAME'  -- Your table name here
ORDER BY a.attnum;

Což by vrátilo výsledky jako:

 num |    name     |             typ             | notnull |       comment       | primary_key 
-----+-------------+-----------------------------+---------+---------------------+-------------
   1 | id          | integer                     | t       | a primary key thing | t
   2 | ref         | text                        | f       |                     | f
   3 | created     | timestamp without time zone | t       |                     | f
   4 | modified    | timestamp without time zone | t       |                     | f
   5 | name        | text                        | t       |                     | f
  • num:Číslo sloupce
  • name:Název sloupce
  • typ:datový typ
  • notnull:Je sloupec definován jako NOT NULL
  • komentář:Jakýkoli COMMENT definovaný pro sloupec
  • primární_klíč:Je sloupec definován jako PRIMARY KEY
  • default:Příkaz použitý pro výchozí hodnotu


  1. Použití Room DB v projektu knihovny

  2. Oracle sql pro počítání instancí různých hodnot v jednom sloupci

  3. Kód pro volání funkce v balíčku z C# a ODP.NET

  4. Klíčové slovo Oracle 'Partition By' a 'Row_Number'