2013-05-02 12 views
12

Frage:PostgreSQL: Wie listet man alle verfügbaren Datentypen auf?

In PostgreSQL (SQL verwenden, nicht die Konsole), wie kann ich alle verfügbaren datataypes Liste?

Idealer wie folgt aus: http://www.java2s.com/Code/PostgreSQL/Postgre-SQL/Displaysalldatatypesintheconnecteddatabasewithcomments.htm

Es sollte auch benutzerdefinierte Typen Liste, wenn es welche gibt.
Genau wie die Liste in pgAdmin3, wo Sie den Datentyp für eine neue Spalte in einer Tabelle definieren.

Antwort

18

"Datentypen" in PostgreSQL enthält tatsächlich primitives (built-in) -Typen, durch Erweiterungen hinzugefügt Typen, benutzerdefinierte Verbundtypen, Domänen und Tabelle rowtypes. Es ist nicht klar, welche davon für Sie von Interesse sind. Alle in einer bestimmten Datenbank verfügbaren Typen sind in der Datenbank pg_catalog.pg_type aufgeführt. Daher müssen Sie möglicherweise die Ergebnisse filtern. Siehe the documentation for the pg_type system catalog table.

Typen für verfügbare, aber nicht installierte Erweiterungen sind nicht aufgeführt. Es gibt keine Möglichkeit, Typen aufzulisten, die von Erweiterungen bereitgestellt werden, die nicht in der aktuellen Datenbank installiert sind.

Um eine schönere Liste von Typen zu erhalten, verwenden Sie psql 's \dT * Befehl. Sie können die zugrunde liegende SQL sehen dies durch psql mit der -E Flagge läuft ausführt:

$ 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

tun Sie alle Arten in Ihrem speziellen db auflisten möchten, oder alle Datentypen, die in Postgres verfügbar sind? – Borys

Verwandte Themen