Mit dem Skriptmodul können Objekte in eine Oracle-Datenbank via ODBC geschrieben werden. Der Modul unterstützt speziell die Oracle Spatial Option für räumliche Daten. Der Modul kann mit RUN1 verwendet werden.
ORAOUT unterstützt sämtliche Geometry-Typen von Oracle Spatial 9.2 und 10g. Diese sind POINT, LINE, POLYGON, MULTIPOINT, MULTILINE, MULTIPOLYGON und COLLECTION.
Der Modul beinhaltet folgende Besonderheiten:
Schreibt Daten nach Oracle Spatial.
Legt Tabellen für die Daten an.
Schreibt die notwendigen Definitionen für Oracle Spatial.
Schreibt die Geometrien für Oracle Spatial.
Schreibt den Spatial Index für die Geometrien von Oracle Spatial.
Die Datenbank kann nach dem Schreiben der Daten direkt mit Oracle Spatial weiterbearbeitet werden.
Der Modul wird mit:
|INCL \script\oraout.mod
in einer ICS Konfiguration verfügbar gemacht.
Der Modul ORAOUT ist eine Erweiterung des Moduls DBOUT. Alle im
Modul DBOUT beschriebenen Anteile gelten auch für das Modul ORAOUT.
Ziehen Sie deshalb die Dokumentation des Modules DBOUT bei, insbesondere
die Abschnitte über die Parametermaps DB_PARAM
und
DBOUT_PARAM
.
Folgende Parameter können in der Map DB_PARAM für den Modul gesetzt werden:
Parameter | req/opt | Beschreibung |
SOURCE | o | ODBC-Source der Datenbank. Muss gesetzt werden, falls die ODBC-Source nicht interaktiv abgefragt wird. |
USER | o | Datenbank User für die Verbindung mit der ODBC-Source. Muss gesetzt werden, falls die ODBC-Source nicht interaktiv abgefragt wird. |
PASSWORD | o | Datenbank Password für die Verbindung mit der ODBC-Source. Muss gesetzt werden, falls die ODBC-Source nicht interaktiv abgefragt wird. |
TRACE | o | ON oder OFF, Default = OFF. Für jedes gelesene Objekt eine Zeile ausgeben. |
Folgende Parameter können in der Map DBOUT_PARAM für den Modul gesetzt werden:
Parameter | req/opt | Beschreibung |
CREATE_TABLE | o | ON , OFF ,Default
= OFF . Definiert ob die Tables definiert
mit Record-Definitionen (siehe weiter unten) in der
Datenbank erzeugt werden sollen. Mit OFF
werden die Tabellen nicht erzeugt. Mit ON
werden die Tabellen erzeugt und zwar zum Zeitpunkt, wenn das
erste Objekt in die Tabelle geschrieben wird. Tables in die
keine Objekte geschrieben werden, werden auch nicht
erzeugt. |
DELETE_OLD | o | ON , OFF oder
DROP , Default = OFF .
Löscht bestehende Daten in Tables definiert mit
Record-Definitionen (siehe weiter unten). Mit
OFF werden keine Daten gelöscht. Mit
ON werden die Daten über ein
delete-sql-statement gelöscht. Mit DROP
wird die Table und damit die Daten gelöscht. Zusammen mit
DROP und dem Parameter
CREATE_TABLE => ON werden die Tables
gelöscht und wieder erzeugt. |
BATCH | o | ON oder OFF ,
Default = OFF . Mit OFF
werden die sql-statements direkt auf der Datenbank
ausgeführt. Mit OFF werden die
sql-statements in ein Batchfile geschrieben. Mit dem
Parameter BATCH_FILE wird das Batchfile
definiert. |
BATCH_OUTPUT_DIR | o | <directory> . Definiert ein
Output-Directory für Batchfiles. Mit diesem Parameter kann
das Output-Directory für Batchfiles definiert werden, falls
der Parameter BATCH = ON definiert ist.
Batchfiles können sein ein File mit SQL-Statementes oder in
Kombination mit dem Oracle Output Modul die
SQLLOADER-Bulkfiles. Ist dieser Parameter nicht gesetzt, so
wird das Output-Directory aus einem eventuellen Input-File
definiert in OPT.input bestimmt. Ist kein Input-File
definiert, so ist das Output-Directory
iltools\data\ics.sql . |
BATCH_FILE | o | <file> . Definiert das
Batchfile. Mit diesem Parameter kann das Batchfile definiert
werden, falls der Parameter BATCH = ON
definiert ist. Ist dieser Parameter nicht gesetzt, so wird
das Batchfile aus einem eventuellen Input-File definiert in
OPT.input mit der Endung .sql bestimmt. Ist kein Input-File
definiert, so ist das Batchfile
iltools\data\ics.sql als definiert. Das
Batchfile beinhaltet SQL-Statements, um die transferierten
Daten mittels SQL in eine Datenbank zu importieren. |
SQLTRACE | o | ON oder OFF ,
Default = OFF . Zeigt alle sql-statements
im Logfile an. |
STATISTICS | o | ON oder OFF ,
Default = OFF . Statistik
anzeigen. |
DATASET | o | ON oder OFF ,
Default = OFF . Definiert, ob die in die
Datenbank geschriebenen Daten als Datasets verwaltetet
werden. Sie dazu mehr unter dem Kapitel Datasets. Der Wert
ON hebt den Parameter
DELETE_OLD auf. |
Folgende Parameter können in der Map ORAOUT_PARAM für den Modul gesetzt werden:
Parameter | req/opt | Beschreibung |
SQLLOADER_USE | o | ON oder OFF ,
Default = OFF . Definiert ob das Schreiben
der Daten in die Datenbank über die Oracle-Utility SQLLoader
erfolgen soll. SQLLoader ermöglicht das schnelle Laden
grosser Datenmengen in Oracle Spatial. Ist dieser Parameter
auf ON gesetzt, so werden sogenannte
Bulk-Files für SQLLoader erstellt. Ist der Parameter
DBOUT_PARAM.BATCH auf
OFF gesetzt, so werden die Bulk-Files
erstellt und mit SQLLoader während des Transfers in die
Datenbank gelesen. Ist der Parameter
DBOUT_PARAM.BATCH auf
ON gesetzt, so werden lediglich die
Bulk-Files erstellt. Diese Variante ermöglicht das Erstellen
von Bulk-Files zur späteren Weiterverarbeitung oder zur
Abgabe an Dritte. |
SQLLOADER_CMD | o | <command> . Default
undefiniert. Ist der Parameter
ORAOUT_PARAM.SQLLOADER_USE auf
ON gesetzt muss dieser Parameter mit dem
Command für die Utility SQLLoader gesetzt sein. Das zu
setztende Command enstpricht dem Befehl, wie er auf einer
Commandline für SQLLoader angwendet werden muss. Beispiel:
sqlldr.exe
userid=scott/tiger@ ORACL .
Anstatt des Commands kann im Parameter auch der Verweis auf
eine Datei definiert werden, welche das Command
beinhaltet. |
SQLLOADER_DECIMALPOINT | o | <char> . Default
, . Definiert den Dezimalpunkt für reelle
Zahlen in den SQLLoader-Bulk-Files. |
SQLLOADER_CONTINUECODE | o | <string> . Default
# . Definiert die Fortsetzungszeichen in
den SQLLoader-Bulk-Files. |
SQLLOADER_FIELDSEPARATOR | o | <string> . Default
| . Definiert die Spaltentrennzeichen in
den SQLLoader-Bulk-Files. |
SPATIAL_STROKE | o | <real> oder
OFF , Default = OFF .
Stroke-Tolerance zur Auflösung von Kreisbögen in
Liniensegmente. Als Stroke-Tolerance können dieselben Werte
wie für die ICS-Methode ICS.STROKE
verwendet werden (s.a. iG/Script Benutzer- und
Referenzhandbuch). Mit OFF werden die
Kreisbögen nicht aufgelöst. |
SPATIAL_METAINSERT | o | ON oder OFF ,
Default = ON . Definiert ob die Metadaten
für Oracle Spatial in die Tabelle
user_sdo_geom_metadata geschrieben werden
sollen. |
SPATIAL_INDEXCREATE | o | ON oder OFF ,
Default = ON . Definiert ob die Indexe für
die Geometrie-Spalten für Oracle Spatial erzeugt werden
sollen. Aufgrund der Tabelle und des Attributes wird
automatisch ein Indexname erzeugt. |
SPATIAL_INDEXDROP | o | ON oder OFF ,
Default = ON . Definiert ob die Indexe für
die Geometrie-Spalten vor dem Schreiben der Daten gelöscht
werden sollen. Dies ermöglicht das schnellere Schreiben der
Daten. Mit ORAOUT_PARAM.SPATIAL_INDEXCREATE =>
ON werden die Indizes nach dem Schreiben wieder
angelegt. |
SPATIAL_INDEXTYPE | o | QTREE oder
RTREE , Default =
RTREE . Definiert den Indextyp für die
Geometrie-Spalten von Oracle Spatial. |
SPATIAL_INDEXTABLESPACE | o | <tablespace> oder
OFF , Default = OFF .
Definiert den Tablespace für die Indizes der
Geometrie-Spalten von Oracle Spatial. |
SPATIAL_VALIDATE | o | ON oder OFF ,
Default = OFF . Definiert ob Oracle
Spatial SQL-Statements in das Logfile gesschrieben werden
sollen. Mit diesen Statements können nachträglich unter
Oracle Spatial die Geometrien validiert werden. |
SPATIAL_SRID | o | <integer> oder
OFF , Default = OFF .
Definiert die ORacle-SRID-Identifikation für die Geometrien.
Jede Geometrie wird mit dem definierten
SRID nach Oracle geschrieben. |
SPATIAL_META_X | o | <min,max,resolution> .
Default 0,1000000,0.001 . Definiert für
die Metadaten von Oracle Spatial die Ausdehnung und
Auflösung der X-Koordinaten. |
SPATIAL_META_Y | o | <min,max,resolution> .
Default 0,1000000,0.001 . Definiert für
die Metadaten von Oracle Spatial die Ausdehnung und
Auflösung der Y-Koordinaten. |
SPATIAL_META_Z | o | <min,max,resolution> .
Default 0,1000000,0.001 . Definiert für
die Metadaten von Oracle Spatial die Ausdehnung und
Auflösung der Z-Koordinaten. |
SPATIAL_GEOM_CLEAN | o | ON oder OFF ,
Default =OFF . Definiert ob die
Geometrien für Oracle aufbereitet weden sollen. Mit
OFF werden die Geometrien nicht
aufbereitet. Mit ON werden die Geometrien
aufbereitet. Mehr zur Funktion GEOM_CLEAN siehe im
Benutzerhandbuch iG/Script im Appendix. |
Für die Anwendung der Oracle Spatial Option und der Oracle-Utility SQLLoader ist die entsprechende Dokumentation von Oracle zu beachten.
Der Modul verlangt pro OUT-Objekt folgende Systemkomponenten:
Komponente | req/opt | Beschreibung |
OUT.TABLE(s) | r | Tablename des OUT Objekts. |
OUT.<Attribut>(s) | o | Attributname der Tabelle. Der Wert der Komponente beinhaltet den Wert für die Datenbank. Der Type des Wertes muss mit dem Type des Attributes in der Datenbank übereinstimmen. Es können beliebig viele Attribute definiert werden. |
Dieses Objektmodell gilt für die Anwendung mit der
Prozedur ORAOUT_WRITE_OBJECT0
. Die Tabellen mit den
Attributen müssen in der Datenbank bereits bestehen oder in einer
Konfiguration mit Prozeduren und Methoden vorgängig kreiert werden.
Falls die Datenbankstrukturen automatisiert mit dem Modul erstellt
werden sollen, so beachten Sie das Kapitel mit den Record-Definitionen
und die Prozedur ORAOUT_WRITE_RECORD1
.
Mit Record Definitionen können nicht nur Objekte in die Datenbank
geschrieben werden, sondern auch Datenbank-Tabellen automatisiert in der
Datenbank angelegt werden. Die Record Definitionen werden von der
Prozedur ORAOUT_WRITE_RECORD1
verarbeitet. Eine
Record Definition sieht wie folgt aus.
MAP RECORD_<n>
TABLE => <Table-Name>
:
<Attribute-Name> => <Attribute-Type>,<Attribute-Value>
:
END_MAP
Die einzelnen Bestandteile einer Record-Definition sind:
RECORD_<n>
Eine Record Definition ist eine Map. Der Map-Name muss
mit dem Prefix RECORD_
beginnen und eine
eindeutige Nummer <n>
für die Record
Definition beinhalten.
TABLE
Diese Komponente ist obligatorisch und definiert die Datenbank-Tabelle.
<Table-Name>
Definiert als Wert der Komponente
TABLE
die Datenbank-Tabelle.
<Attribute-Name>
Definiert als Komponente einen Attribut-Namen innerhalb der Tabelle. Es können beliebig viele Attribute als Komponenten definiert werden.
<Attribute-Type>
Definiert den Attribut-Type in der Datenbank. Im Normalfall können der Datenbank bekannt Typen verwendet werden. Spezialtypen einer Datenbank werden eventuell nocht nicht unterstützt. Solche Spezialtypen werden bei Bedarf und auf Anfrage implementiert. Bei den Typen ist auf folgendes zu achten.
CHAR(<length>)
Stringtypen sind immer als
CHAR
mit der Länge
<length>
zu definieren. Je
nach Datenbank wird der Typ vom Modul in einen der
Datenbank bekannten Type umgewandelt z.B. Oracle als
VARCHAR2
.
NUMBER
Number-Typen ohne Argumente werden vom Modul als
NUMBER(38,5)
interpretiert.
DATE("YYYY-MM-DD")
Datums Typ. Mit dem Datums Typ muss auch das
Format des Datums definiert werden. Der Modul erzeugt
aufgrund des Formats eine entsprechende SQL-Anweisung
TO_DATE('1993-04-03','YYYY-MM-DD'))
.
Der Wert für das Attribut, muss als Integer oder
String die Form YYYYMMDD aufweisen. Zum Beispiel
<Attribute-Value>=19939493
oder
<Attribute-Value>='19939493'
.
MDSYS.SDO_GEOMETRY(<type>;<dimension>;<resolution>)
Oracle Spatial Geometrien müssen als Type
MDSYS.SDO_GEOMETRY
definiert
werden. Dabei sind folgende weiteren Definitionen
notwendig.
<type>
Type der Geometrie, einer der Werte:
point|line|area|gmtext.
<dimension>
Dimension der Geometrie, einer der Werte:
2D|3D|3DM.
3DM
nur für Geometrietyp
line
erlaubt. Die 3 Koordinate
wird als Measurement interpretiert.
<resolution>
Real-Wert der Auflösung.
<Attribut-Value>
Definiert den Wert für das Attribut. Als Wert können
Konstanten oder ICS-Variablen, die einen Wert beinhalten - z.B.
IN.OBJID
- verwendet werden.
Beispiel einer Record Definition.
MAP RECORD_1 TABLE => Fixpunkte_LFP OBJID => CHAR(10),IN.OBJID ENTSTEHUNG => CHAR(10),IN.Entstehung.OBJID NUMMER => CHAR(12),IN.Nummer GEOMETRIE => MDSYS.SDO_GEOMETRY(point;3D;0.001),IN.Geometrie LAGEZUV_TXT => CHAR(4),IN.LageZuv_TXT HOEHEZUV_TXT => CHAR(4),IN.HoeheZuv_TXT BEGEHBARKEIT_TXT => CHAR(14),IN.Begehbarkeit_TXT SYMBOLORI => NUMBER,IN.SymbolOri ART_TXT => CHAR(4),IN.Art_TXT HERKUNFT => CHAR(30),IN.Herkunft END_MAP
Zur Verwaltung von Datasets in der Datenbank ist das analoge Kapitel des Modules DBOUT zu beachten.
Falls basierend auf den Record-Definitionen vor einem
Datentransfer das gesamte Datenbankmodell inklusive den notwendigen
Oracle Spatial Definitionen erstellt werden soll, so ist der Parameter
CONFIG_PARAM.GENERATE_MODEL
auf ON
zu setzen und das Script il2ora.lib
zu
includen:
MAP CONFIG_PARAM GENERATE_MODEL => ON END_MAP : |INCL \script\il2db\il2ora.lib
Entsprechend den Record-Definitionen wird vor einem Datentransfer das Datenbankmodell angelegt, falls es nicht schon angelegt wurde.
Der Modul beinhaltet alle Prozeduren und Methoden wie der Modul DBOUT. Ziehen Sie deshalb die Dokumentation des Modules DBOUT bei.
Zusätzlich stellt der Modul ORAOUT folgende Prozeduren und Methoden zur Verfügung.
Prozedur | ORAOUT_OPEN [][] |
Beschreibung | Öffnet eine Datenbank definiert
mit DB_PARAM.SOURCE . Die Prozedur wird
von RUN1 automatisch aufgerufen. |
Beispiel |
|
Prozedur | ORAOUT_WRITE_OBJECT0 |
Beschreibung | Schreibt einen Objekt in die Datenbank. Das OUT-Objekt muss gemäss dem Objektmodell vorbereitet sein. |
Beispiel |
|
Prozedur | ORAOUT_WRITE_RECORD1 ! s recordname |
Beschreibung | Schreibt ein Objekt
definiert in
|
Beispiel |
|
Prozedur | ORAOUT_CLOSE [][] |
Beschreibung | Schliesst den Modul und gibt die durch den Modul belegten Resourcen wieder frei. Die Prozedur wird von RUN1 automatisch aufgerufen. |
Beispiel |
|
Methode | ORACLE.GEOM_TO_SDO_GEOMETRY [g|li geom, i dimension [, b measurement]][s sdo-geometry] |
Beschreibung | Übersetzt eine ICS-Geometrie
point,line oder area in eine Oracle-Spatial Geometrie als
String. Als Input können auch Listen von Geometrien
übergeben werden. Falls die Geometrien nicht übersetzt
werden können, wird auf dem Stack ein NULL-String
zurückgegeben. Boolean measurement ist
optional und nur für dimension 3 und
Geometrien vom Type line erlaubt. Die 3
Koordinate wird als Measurement interpretiert. |
Beispiel |
|
Folgende Konversionen werden durchgeführt:
|
Methode | ORACLE.SET_RESOLUTION [r resolution][] |
Beschreibung | Definiert die Resolution mit der die Koordination von Geometrien in eine Oracle-Spatial Geometrie übersetzt werden. Default ist 0.001. Zum Beispiel wird mit der Resolution 0.00001 eine Koordinate mit 5 Nachkommastellen übersetzt. |
Beispiel |
|
Neben diesen Prozeduren des Modules stehen auch die Prozeduren und Methoden des Modules DBOUT zur Verfügung. Diese Prozeduren und Methoden sind im Modul DBOUT beschrieben.
! Diese ICS Konfiguration liest ein INTERLIS FIle, ! kreiert eine Tabelle für LFP's in der Datenbank ! und schreibt die LFP's in die Tabelle. |LICENSE \license\iltoolspro.lic MAP USER_INPUT1 DIALOG => FILE MESSAGE => 'Enter INTERLIS Input File' FILE_FILTER => itf FILE_EXISTS => TRUE OPT => input END_MAP MAP USER_INPUT2 DIALOG => ODBC OPT => output END_MAP MAP ILIN_PARAM INTERLIS_DEF => \models\Grunddatensatz.ili STATISTICS => ON CALC_SURFACE => ON ENUM_TO_TEXT => ON TRACE => OFF END_MAP MAP ILIN_TOPO DEFAULT => OFF END_MAP MAP DB_PARAM SOURCE => '' ! ODBC-Source USER => '' ! ODBC-User PASSWD => '' ! ODBC-Password TRACE => OFF END_MAP MAP DBOUT_PARAM STATISTICS => ON CREATE_TABLE => ON DATASET => ON END_MAP MAP ORAOUT_PARAM SPATIAL_STROKE => OFF ! OFF or a real Stroke-Tolerance SPATIAL_METAINSERT => ON ! ON|OFF Spatial Meta Insert SPATIAL_INDEXDROP => ON ! ON|OFF Spatial Index Drop before Insert SPATIAL_INDEXCREATE => ON ! ON|OFF Spatial Index Create after Insert SPATIAL_VALIDATE => OFF ! ON|OFF Spatial Validate after Insert SPATIAL_META_X => 0,1000000,0.001 ! x-min,x-max,x-tolerance SPATIAL_META_Y => 0,1000000,0.001 ! y-min,y-max,y-tolerance SPATIAL_META_Z => 0,1000000,0.001 ! z-min,z-max,z-tolerance SPATIAL_INDEXTABLESPACE => OFF SPATIAL_SRID => OFF END_MAP MAP RECORD_1 TABLE => Fi_LFP OBJID => CHAR(10),IN.OBJID ENTSTEHUNG => CHAR(10),IN.Entstehung.OBJID NUMMER => CHAR(12),IN.Nummer GEOMETRIE => MDSYS.SDO_GEOMETRY(point;3D;0.001),IN.Geometrie LAGEZUV_TXT => CHAR(4),IN.LageZuv_TXT HOEHEZUV_TXT => CHAR(4),IN.HoeheZuv_TXT BEGEHBARKEIT_TXT => CHAR(14),IN.Begehbarkeit_TXT SYMBOLORI => NUMBER,IN.SymbolOri ART_TXT => CHAR(4),IN.Art_TXT HERKUNFT => CHAR(30),IN.Herkunft END_MAP MAP INPUT_SOURCES I1 => ILTOPO,OPT.input END_MAP MAP INOUT I1 => IN.TOPIC,IN.TABLE I1,Fixpunkte,LFP => ORAOUT_WRITE_RECORD1,RECORD_1 I1,* => OFF END_MAP |INCL \script\iltopo.mod |INCL \script\oraout.mod |INCL \script\run1.prg