2016-09-21 7 views
0

Ich brauche die säulenartigen Namen einer Tabelle zu wissen, und so weit ich bin mit dieser Abfrage:Wie bekomme ich den richtigen Namen?

SELECT column_name as name, 
     data_type as type 
FROM information_schema.columns 
WHERE table_name = 'MY_TABLE'; 

Das Problem ist, dass für die Datentypen wie geometry (POSTGIS) es USER-DEFINED kehrt statt geometry .

Gibt es eine Möglichkeit, den richtigen Spaltennamen zu erhalten?

+0

Müssen Sie den Typ mit einer SQL-Abfrage finden? Wenn nicht, funktioniert '\ d MY_TABLE' in' psql' nicht für Sie? – redneb

+0

@redneb Ich würde dies in einer Abfrage tun müssen, wenn möglich –

+0

Ich bin mir nicht sicher, ob dies funktioniert, aber Sie könnten versuchen, die 'pg_typeaf' -Funktion zu verwenden. Es nimmt einen _value_ und gibt seinen Typ als String zurück. Der Nachteil ist, dass Sie einen solchen Wert finden müssen, der z. wenn die Tabelle leer ist. – redneb

Antwort

1

ich jetzt dieses Recht nicht testen kann, sondern nach dem documentation für information_schema.columns:

data_type

Datentyp der Spalte, wenn es ein eingebauter Typ ist, oder ARRAY, wenn es einige Array (in diesem Fall, siehe die Ansicht element_types), sonst USER-DEFINED (in diesem Fall ist der Typ in udt_name und zugeordneten Spalten identifiziert). Wenn die Spalte auf einer Domäne basiert, bezieht sich diese Spalte auf den Typ, der der Domäne zugrunde liegt (und die Domäne wird in Domänenname und zugehörigen Spalten mit gekennzeichnet).

Also vielleicht die Spalte udt_name enthält, was Sie wollen.

+0

Ich werde es so schnell wie möglich versuchen. Vielen Dank!! –

Verwandte Themen