2010-07-16 11 views
24

Sorgu sonucunun sütun türlerini kolayca almanın bir yolu var mı? Psql belgelerini okudum ama bunu desteklediğini sanmıyorum. Ben bir şey kodlama olmadan bu bilgileri alabilirsiniz bir yolu var mıSorgulama sonucu sütun türlerini göster (PostgreSQL)

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

: İdeal olarak, ben böyle bir şey almak mümkün olurdu?

+0

Ha, bu soruyu dün #postgresql'de sordum (cevap yok) –

+0

'psql' nin doğrudan size gösterebileceğini sanmıyorum. Ama bunu yapmak için onu değiştirmek oldukça kolay olmalı. Belki de buna benzetmek için saklı bir prosedür yazabilirsiniz. – Wolph

cevap

3

Bunun için saklı bir yordam yazmadıkça, örnekte tam olarak ne yazdırabileceğinizi düşünmüyorum.

Tek yönlü (iki "seçer") bunu yapmak için:

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

Evet, sadece biçimlere ihtiyacım vardı, bu formatta değil. Teşekkürler. –

+4

Bu, pg_typeof() 'işlevine kıyasla oldukça kulağa ve rahatsız edici görünmüyor. –

+3

@JayTaylor Katılıyorum. Hayat bir yolculuktur. :-) –

37

Herhangi SELECT sorgusu sonucu kolon tipini almak mümkündür. Aşağıdaki sorgu ve sonuç Verilen

Örnek

, sorusuna cevap let * "all_ids sütun türü nedir?" *

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

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

Biz türünü açıklayacak bir mekanizma gerek "all_ids".

postgres mailing list archives üzerinde, pg_typeof adlı yerel bir pg işlevine başvurdum.

Örnek kullanım:

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

Çıktı:

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

Şerefe!