Mehr

Abfragen des Oracle-Geometriedatentyps


Wie kann man den Geometriedatentyp abfragen oder finden, den eine bestimmte Oracle-Datenbank in SQL Developer verwendet (d. h. SDO_Geometry, ST_Geometry usw.)?

Ich dachte, ich könnte einfach eine Feature-Class in der Datenbank beschreiben und das Ergebnis erhalten, aber es gibt nur die Feldtypen zurück. Das Geometriefeld gibt nur 'NUMBER' zurück, was nicht hilfreich ist.


Sie können die SDO-Metadatentabelle überprüfen, um räumliche Informationen zu erhalten:

select * from MDSYS.ALL_SDO_GEOM_METADATA wobei TABLE_NAME = 'tablename'

Mit reinem SQL können wir den Datentyp einer Spalte mithilfe derALL_TAB_COLUMNSAussicht:

SELECT * FROM ALL_TAB_COLUMNS WHERE UPPER(OWNER) = 'THE_SCHEMA' AND UPPER(TABLE_NAME) = 'THE_TABLE'

Eine der Ergebnisspalten istDATENTYP. Beachten Sie, dass es aUSER_TAB_COLUMNSwenn Sie eine Verbindung als das Schema herstellen, das die interessierende Tabelle enthält.

Könnten wir auch gebrauchenBESCHREIBEN:

BESCHREIBEN SIE THE_SCHEMA.THE_TABLE

Aber das Ergebnis dieses Befehls kann nicht weiter abgefragt werden.

Wir können auch verwendenALL_TAB_COLUMNSum herauszufinden, welche räumlichen Spalten wir haben:

SELECT * FROM ALL_TAB_COLUMNS WHERE DATA_TYPE = 'SDO_GEOMETRY';

ST_GEOMETRYkann einfach hinzugefügt werdenWOKlausel. Basierend auf Vinces Kommentar scheint der folgende Filter ein guter Ausgangspunkt zu sein:

SELECT * FROM ALL_TAB_COLUMNS WHERE DATA_TYPE LIKE '%GEOM%' ODER DATA_TYPE LIKE '%SDE%' ;

Beachten Sie, dass weder Oracle noch ArcGIS viel mit den Spalten anfangen können, es sei denn, dieUSER_SDO_GEOM_METADATAhat einen Eintrag für jede Geometriespalte und ein räumlicher Index wird hinzugefügt.


Schau das Video: Oracle Database 21c (Oktober 2021).