PG WORKSHOP

OGR2OGR mod Oracle og PostgreSQL

Et import/eksport værktøj til vektordata: http://www.gdal.org/ogr2ogr.html

So dokumentation for GOR2OGR driverne til PostgreSQL og Oracle her:

OGR2OGR skal være kompileret mod Oracle. prekompilerede "binaries" med Oracle support kan henets her: http://www.gisinternals.com/sdk/

Eksempler

Indlæs en hel database fra PostgresSQL til Oracle
>ogr2ogr -f "OCI" OCI:septimadb/septima4you pg:"host=10.15.24.14 port=5432 user=mbj password=secret dbname=kbh_workshop"

PostgreSQL skemaer prefixes med underscore i Oracle. trafik.afmaerkning_cykelrampe bliver i Oracle til TRAFIK_AFMAERKNING_CYKELRAMPE

Indlæs en hel user/database fra Oracle til PostgresSQL
>ogr2ogr -f "postgresql" pg:"host=10.15.24.14 port=5432 user=mbj password=secret dbname=kbh_workshop" "OCI" OCI:septimadb/septima4you
Indlæs en hel user/database fra Oracle til PostgresSQL og tildel SRS til utm zone 32 i output

Man kan tildele en specifik SRS til outputtet uanset om SRS mangler fra datakilden

>ogr2ogr -a_srs EPSG:25832 -f "postgresql" pg:"host=10.15.24.14 port=5432 user=mbj password=secret dbname=kbh_workshop" "OCI" OCI:septimadb/septima4you
Indlæs en hel user/database fra Oracle til PostgresSQL og tildel SRS til utm zone 32 i output

Man kan tildele en specifik SRS til outputtet uanset om SRS mangler fra datakilden

>ogr2ogr -a_srs EPSG:25832 -f "postgresql" pg:"host=10.15.24.14 port=5432 user=mbj password=secret dbname=kbh_workshop" "OCI" OCI:septimadb/septima4you
Indlæs en hel user/database fra Oracle til PostgresSQL i specifikt skema
>ogr2ogr -f "postgresql" pg:"host=10.15.24.14 port=5432 user=mbj password=123Portal dbname=ora"  OCI:septimadb/septima4you -lco SCHEMA=test
Indlæs enkelte tabeller fra Oracle til PostgresSQL i specifikt skema

Man kan indlæse enkelte tabeller fra Oracle databasen når de er angivet i connection strengen. Det er altid en god idé at angive specifikke tabeller, da indlæsningen går meget hurtigere da ogr2ogr ikke skal skanne alle tabller mens den initialiserer.

Bemærk også at instancen "xe" også er angivet. KAn undlades, hvis databasen er lokalt på maskinen.

>ogr2ogr -f "postgresql" pg:"host=10.0.0.13 port=5432 user=mbj password=123Portal dbname=ora"  OCI:"septimadb/septima4you@xe:TEK_
HYDRO,TEK_HELLE" -lco SCHEMA=test1

Eller uden instans og mulighed for overskrivning af eksisterende tabeller

>ogr2ogr -f "postgresql" pg:"host=10.0.0.13 port=5432 user=mbj password=123Portal dbname=ora"  OCI:"septimadb/septima4you@:TEK_
HYDRO,TEK_HELLE" -lco SCHEMA=test1 -lco=OVERWRITE=YES
Væsentlige Miljøvariable

OGR2OGR kan konfigureres på rigtig mange parametre. Nogle af dem, der anvendes hyppigt er angivet nedenfor.

COPY

For at forøge indlæsningshastigheden betragteligt kan man bruge Postgres' COPY mode:

SET PG_USE_COPY=YES
Decimalsparator

For at konverteringen af bl.a. decimaltal sker korrekt kan det være nødvendigt at sætte ORACLE Miljøvariablen NLS_LANG. Derudover kan det i ngoe3, OGR2OGR versioner være nødvendigt at søtte "layer creation option" -lco PRECISON=NO for at undgå at felter konverteres til char (X) felter med x antal blank spaces

SET NLS_LANG=American_America.UTF8
Væsentlige OGR2OGR Layer Creation Options
geoemtri-demensioner

Kontrollér dimensionerne for geometrierne med -lco DIM

ogr2ogr ..........-lco DIM=2

defualt vædien er 3

ogr2ogr ..........-lco GEOMETRY_NAME=the_geom
Præcision for kolonner

Når data konverteres anbefales det at sætte - lco PRECISION=NO for at sikre at typerne i Oracle NUMERIC(width,precision) or CHAR(width) konverteres i PostgreSQL til typerne FLOAT8, INTEGER and VARCHAR. Derved undgås bl.a. "blank spaces" i felterne

Overskriv

Ved indlæsning kan man overskrive eksisterende tabeller med -lco OVERWITE=YES

ogr2ogr ..........-lco OVERWITE=YES