Show query result column types (PostgreSQL)

Viewed 27784

Is there a way to easily get the column types of a query result? I read the psql documentation, but I don't think it supports that. Ideally, I'd be able to get something like:

 columna : text | columnb : integer
----------------+-------------------
 oh hai         |                42

Is there a way I can get this information without coding something up?

3 Answers

It is definitely possible with \gdesc command(psql 11):

\gdesc

Shows the description (that is, the column names and data types) of the result of the current query buffer. The query is not actually executed; however, if it contains some type of syntax error, that error will be reported in the normal way.

If the current query buffer is empty, the most recently sent query is described instead.

For example:

$ SELECT * FROM pg_database \gdesc

    COLUMN     |   TYPE    
---------------+-----------
 datname       | name
 datdba        | oid
 encoding      | INTEGER
 datcollate    | name
 datctype      | name
 datistemplate | BOOLEAN
 datallowconn  | BOOLEAN
 datconnlimit  | INTEGER
 datlastsysoid | oid
 datfrozenxid  | xid
 datminmxid    | xid
 dattablespace | oid
 datacl        | aclitem[]
Related