Domanda Mostra i tipi di colonne del risultato della query (PostgreSQL)


C'è un modo per ottenere facilmente i tipi di colonna di un risultato di una query? Ho letto la documentazione di psql, ma non credo che lo supporti. Idealmente, sarei in grado di ottenere qualcosa come:

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

C'è un modo per ottenere queste informazioni senza dover scrivere qualcosa?


25
2017-07-16 18:22


origine


risposte:


Non penso che tu possa stampare esattamente ciò che hai nel campione, a meno che tu non scriva una procedura memorizzata per questo.

Un modo per farlo (due "selezioni"):

  1. create table my_table as select ...
  2. \d my_table
  3. select * from my_table

3
2017-07-19 09:34



È possibile ottenere qualsiasi tipo di colonna del risultato della query SELECT.

Esempio

Data la seguente query e risultato, rispondiamo alla domanda * "Qual è il tipo di colonna di all_ids?" *

SELECT array_agg(distinct "id") "all_ids" FROM "auth_user";

                 all_ids
--------------------------------------------
 {30,461577687337538580,471090357619135524}
(1 row)

Abbiamo bisogno di un meccanismo per svelare il tipo di "all_ids".

Sul archivi postali di Postgres Ho trovato riferimento a una funzione pg nativa chiamata pg_typeof.

Esempio di utilizzo:

SELECT pg_typeof(array_agg(distinct "id")) "all_ids" FROM "auth_user";

Produzione:

 all_ids
----------
 bigint[]
(1 row)

Saluti!


39
2018-06-13 19:16