PDA

View Full Version : Oracle Datenbank lesen



loisl
16-01-12, 16:33
Hallo,

ich müsste von einer Oracle Datenbank Daten einlesen, aufbereiten und in eine iSeries Datenbank schreiben. Welches ist dafür die schnellste Lösung? Oder, wo kann ich da was nachlesen?
Kann ich eventuell auch über ein API einlesen?

Im Voraus vielen Dank
und Mfg
loisl

Fuerchau
16-01-12, 16:36
Standardmäßig gibts da nichts.
Aber auf Dieter Benders Hompage findest du ein kleines JavaProgramm mit dem du von jeder Datenbank kopieren kannst.

Ansonsten suche mal nach ArdGate (OpenSource).
Mit diesem kannst du dann native mit embedded SQL auf die Oracle-DB zugreifen.

loisl
16-01-12, 16:40
Hallo,

danke für die schnelle Antwort. Die OpenSource werde ich mir mal anschauen.

Loisl

BenderD
16-01-12, 19:22
.. oder einfach den link in der Signature anklicken, Oracle Gateway kaufen, oder WebSphere Federation Server auf einem zusätzlichen Rechner installieren. oder eine der Würgdrumherums einsetzen.

D*B

PS: ich bin dem ein oder anderen als freundlicher eMailer bekannt...

loisl
17-01-12, 06:23
Hi,

würde ich gerne machen, da ist aber kein Link

Mfg
loisl

loisl
17-01-12, 07:09
Hi,

habs' gefunden unter bender-dv.de und appServer4RPG
danke.

Fuerchau
17-01-12, 08:57
Gerade beim Lesen von Oracle musst du stark auf die Felddefinitionen achten!

Feldtyp NUMBER:
Häufig ist dieser nicht genau definiert wie "Number(n, m)" sondern pauschal, so dass ArdGate hier nicht weiß, wie es die Umsetzung machen soll.
Daher ist das Feld dann entsprechend zu casten "cast(Field as number(n, m))".

Feldtyp DATE:
Häufig wird in diesem Typ bei Oracle auch oder nur die Uhrzeit abgelegt, ArdGate kann aber nur das Datum liefern da Java das so macht.
Benötigst du die Uhrzeit zusätzlich, musst du auch hier den Feldtyp in Char casten "cast(Datefield as [var]char(nn))"

Es gibt sicherlich noch mehr "Ungereimtheiten" bei Oracle, die aber letztendlich nicht so schwierig beim Umgehen sind.

Besonders ist noch auf den Typ "n[var]char2" bei Oracle einzugehen.
Die Größe wird bei Oracle leider in Byte definiert, der Inhalt ist aber UTF-8.
Dadurch kann es beim Schreiben (Insert/Update) zu Problemen kommen, insbesonders wenn man in RPG nicht mit "varying" arbeitet und trailing Blanks entfernt!

Ein "nvarchar2(2)" kann zwischen 1 und 2 Zeichen aufnehmen, je nach Zeichencode.
"AA" - "99"
"Ü"
Das "Ü" belegt 2 Byte, das Oraclefeld kann daher nur das "Ü" selber aufnehmen, ein Bank ist dann nicht mehr möglich.

Äquivalent verhält sich das dann auch mit z.B. Adressfeldern, wo beim Schreiben ungewöhliche Fehler ("Feld ist zu klein" gemeldet werden, da der zu schreibende Wert 2-Byte-Sonderzeichen und Leerzeichen am Ende enthält.

loisl
18-01-12, 08:13
Hi
danke für die Info - hilft gut weiter.
mfg
loisl

gue_br
05-03-12, 07:49
Hallo loisl!

Ich hab für unsere Firma auch einen Oracle-Connector gemacht.
Schreibt und liest in eine Tabelle auf einem Oracle-Server.

Hab es mit jdbc gemacht.
Läuft seit mehreren Jahren ohne Probleme.

Gruß,
Günter