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

Interrogare i dettagli dello schema di una tabella in PostgreSQL?

C'è un molto più semplice modo in PostgreSQL per ottenere il tipo di una colonna.

SELECT pg_typeof(col)::text FROM tbl LIMIT 1

Il tavolo deve contenere almeno una riga, ovviamente. E ottieni solo il tipo base senza modificatori di tipo (se presenti). Usa l'alternativa qui sotto se ne hai bisogno anche tu.
Puoi usare la funzione anche per le costanti. Il manuale su pg_typeof() .

Per una tabella vuota (o qualsiasi) puoi utilizzare query nel catalogo di sistema pg_attribute per ottenere l'elenco completo delle colonne e il rispettivo tipo in ordine:

SELECT attnum, attname AS column, format_type(atttypid, atttypmod) AS type
FROM   pg_attribute
WHERE  attrelid = 'myschema.mytbl'::regclass   -- optionally schema-qualified
AND    NOT attisdropped
AND    attnum > 0
ORDER  BY attnum;

Il manuale su format_type() e su tipi di identificatori di oggetto come regclass .