2013-05-02 28 views
12

Domanda:PostgreSQL: come elencare tutti i tipi di dati disponibili?

In PostgreSQL (utilizzando SQL, non il console), come posso elencare tutti datataypes disponibili?

Idealmente come questo: http://www.java2s.com/Code/PostgreSQL/Postgre-SQL/Displaysalldatatypesintheconnecteddatabasewithcomments.htm

Si dovrebbe anche elencare i tipi definiti dall'utente, se ce ne sono.
Proprio come l'elenco in pgAdmin3 in cui si definisce il tipo di dati per una nuova colonna in una tabella.

risposta

18

"tipi di dati" in PostgreSQL include effettivamente tipi primitivi (built-in), tipi aggiunti da estensioni, tipi composti definiti dall'utente, domini e rowtypes tavola. Non è chiaro quali di questi siano di tuo interesse. Tutti i tipi disponibili in un determinato database sono elencati in tale database pg_catalog.pg_type quindi potrebbe essere necessario filtrare i risultati. Vedi the documentation for the pg_type system catalog table.

I tipi di estensioni disponibili ma non installate sono non nell'elenco. Non c'è modo di elencare i tipi forniti da estensioni non installate nel database corrente.

Per ottenere un elenco di tipi più carini, utilizzare il comando psql\dT *. Si può vedere l'SQL sottostante questo esegue eseguendo psql con il flag -E:

$ psql -E regress 
regress=> \dT * 
********* QUERY ********** 
SELECT n.nspname as "Schema", 
    pg_catalog.format_type(t.oid, NULL) AS "Name", 
    pg_catalog.obj_description(t.oid, 'pg_type') as "Description" 
FROM pg_catalog.pg_type t 
    LEFT JOIN pg_catalog.pg_namespace n ON n.oid = t.typnamespace 
WHERE (t.typrelid = 0 OR (SELECT c.relkind = 'c' FROM pg_catalog.pg_class c WHERE c.oid = t.typrelid)) 
    AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type el WHERE el.oid = t.typelem AND el.typarray = t.oid) 
    AND pg_catalog.pg_type_is_visible(t.oid) 
ORDER BY 1, 2; 
************************** 
12
select * from pg_type; 

pg_type

+0

vuoi elencare tutti i tipi di vostra particolare db, o tutti i tipi di dati che sono disponibili in Postgres? – Borys

Problemi correlati