AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken csv aus Oracle Datenbank extrahieren
Thema durchsuchen
Ansicht
Themen-Optionen

csv aus Oracle Datenbank extrahieren

Ein Thema von hedie · begonnen am 5. Feb 2015 · letzter Beitrag vom 6. Feb 2015
Antwort Antwort
Seite 1 von 2  1 2      
hedie

Registriert seit: 12. Dez 2005
Ort: Schweiz
1.024 Beiträge
 
Delphi XE6 Starter
 
#1

csv aus Oracle Datenbank extrahieren

  Alt 5. Feb 2015, 19:23
Datenbank: Oracle • Version: 11g • Zugriff über: ODBC/Direkt
Hallo zusammen

Ich habe folgendes Problem/Ziel:

Ich möchte aus einer Oracle Datenbank einige bestimmte Tabelle in ein CSV abspeichern.
Abfrage wäre also
Code:
SELECT * FROM TABLE
Nach dem ich diese CSVs habe, muss ich einige Spalten entfernen, und gewisse Spalten aus dem einen CSV in das andere importieren.
Wenn dies abgeschlossen ist, muss ich die Daten im neuen CSV in eine MySQL Datenbank speisen...

Dies alles möchte ich natürlich am ende mit einem einzelnen Klick erledigen lassen.
Am wichtigsten ist für mich, das extrahieren der Tabelle aus Oracle.
Für die beiden anderen Aufgaben, finde ich ziemlich sicher etwas mit google...

Danke euch schonmal!
Claudio
Tu was du nicht lassen kannst
- http://endasmedia.ch
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#2

AW: csv aus Oracle Datenbank extrahieren

  Alt 5. Feb 2015, 19:29
Etwas Ähnliches hatten wir doch gerade erst: http://www.delphipraxis.net/183803-a...umwandeln.html

[edit] Oracle kann doch von sich aus bereits nach CSV exportieren: http://www.held-informatik.de/tipps-...e-tabelle.html [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen

Geändert von DeddyH ( 5. Feb 2015 um 19:31 Uhr)
  Mit Zitat antworten Zitat
hedie

Registriert seit: 12. Dez 2005
Ort: Schweiz
1.024 Beiträge
 
Delphi XE6 Starter
 
#3

AW: csv aus Oracle Datenbank extrahieren

  Alt 5. Feb 2015, 19:38
Etwas Ähnliches hatten wir doch gerade erst: http://www.delphipraxis.net/183803-a...umwandeln.html

[edit] Oracle kann doch von sich aus bereits nach CSV exportieren: http://www.held-informatik.de/tipps-...e-tabelle.html [/edit]
Danke für deine Antwort.
Ja du hast recht, etwas ähnliches wird im erst genannten Thread besprochen.

Zum zweiten Link: sieht sehr interessant aus. Leider weiss ich nicht, wie ich die SQL Plus Anfrage an den Oracle Server senden soll..

Ich habe noch dies im Netz gefunden:
http://www.orafaq.com/wiki/Delphi

Eigentlich ist dies exakt das was ich brauche.
Leider kennt mein Delphi XE6 Starter kein SqlExpr und auch kein DbxOracle.
Kennt jemand diese Komponenten und weiss ob man diese herunterladen kann?

[EDIT] http://www.devart.com/dbx/oracle/ Ja hier... Sind kostenpflichtig. Somit leider keine Lösung für mich!

Danke!
Claudio
Tu was du nicht lassen kannst
- http://endasmedia.ch
  Mit Zitat antworten Zitat
hedie

Registriert seit: 12. Dez 2005
Ort: Schweiz
1.024 Beiträge
 
Delphi XE6 Starter
 
#4

AW: csv aus Oracle Datenbank extrahieren

  Alt 5. Feb 2015, 19:46
Ich habe Delphi Starter.
Deshalb kann ich ADODB nicht verwenden
Claudio
Tu was du nicht lassen kannst
- http://endasmedia.ch
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: csv aus Oracle Datenbank extrahieren

  Alt 5. Feb 2015, 20:24
Man kann es sich kompliziert machen und alle Tabellen erst als CSV exportieren, die dann auseinanderpflücken, Teile rauswerfen, Teile reinnehmen, schauen, ob die auch so zusammenpassen ..... bla bla bla ...

Oder man erstellt sich eine Abfrage, die alle Daten schön zusammen sucht und exportiert diese dann.

Variante 1: ABM mit Fehlerpotential
Variante 2: Schnell gemacht und einfach zu pflegen

Welches Schweinerl hättens denn gern?
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: csv aus Oracle Datenbank extrahieren

  Alt 5. Feb 2015, 20:27
Ich habe Delphi Starter.
Deshalb kann ich ADODB nicht verwenden
Du hast keine Datenbank-Komponenten?

Dann lege dir vor die beiden DB-Server jeweils einen Webserver mit einem PHP-REST und du führst den Abgleich per Cron-Job aus. Die Delphi Tüte kannst du also zulassen
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
hedie

Registriert seit: 12. Dez 2005
Ort: Schweiz
1.024 Beiträge
 
Delphi XE6 Starter
 
#7

AW: csv aus Oracle Datenbank extrahieren

  Alt 5. Feb 2015, 20:57
Ich habe Delphi Starter.
Deshalb kann ich ADODB nicht verwenden
Du hast keine Datenbank-Komponenten?

Dann lege dir vor die beiden DB-Server jeweils einen Webserver mit einem PHP-REST und du führst den Abgleich per Cron-Job aus. Die Delphi Tüte kannst du also zulassen
Am liebsten hätte ich natürlich die Variante 2

Dies klingt interessant. Einen Webserver habe ich sowieso im Betrieb, um dann die Daten aus der MySQL DB abzufragen.
PHP ebenfalls.

Bei einem solchen Abgleich würde ich wie folgt vorgehen:

Gesamte MySQL Tabelle löschen.
Spalten bzw. Zeilen nach und nach mit CREATE und den DATEN aus der Oracle DB auffüllen.
Dannach würde ich die zweite Oracle Tabelle wählen und dann mit UPDATE die fehlenden Spalten in der MySQL Tabelle mit den Daten aus der Oracle Tabelle befüllen.

Warum würde ich die komplette Tabelle löschen?
Weil sich an diversen Stellen der Oracle Tabelle Daten ändern können.

Der Sync umfasst ca. 12000 Zeilen aus der Oracle Tabelle.
Als ich mit PHP und oci_query zuletzt folgenden Query ausführe: "SELECT * FROM tabellexy" ist mir der Firefox bzw. der Apache Service abgeschmiert...

Gibt es da elegantere Wege oder Tipps eurerseits?
Claudio
Tu was du nicht lassen kannst
- http://endasmedia.ch
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

AW: csv aus Oracle Datenbank extrahieren

  Alt 5. Feb 2015, 22:00
Ich weiß ja nicht was du da genau vorhast und wieviel Speicher die komplette Tabelle verbraucht.

Aber benötigst du die komplette Tabelle? Du hast doch geschrieben, du hast Daten aus unterschiedlichen Tabellen, die irgendwie zusammen müssen.

Ausserdem kann man das auch in Häppchen unterteilen, wenn es für WebServer A oder B zu groß vom Speicher ist. Man muss da nur logisch vorgehen.
  • Zuerst stellt man die Daten zusammen, so wie man die braucht.
  • Dann überlegt man sich das Übertragungsformat (ich präferiere da JSON).
  • Dann schaut man sich an, wieviel RAM die Ausführung benötigt und gibt dem Server mehr zur Verfügung (PHP, Apache haben jeweils ein Session-Limit, was man verändern kann) oder teilt die Übertragung in mehrere Pakete auf.
  • Die Pakete werden auf dem Zielserver in eine Import-Tabelle oder sonst wie zwischengespeichert.
  • Sind alle Pakete da, dann werden diese in korrekter Reihenfolge innerhalb einer Transaktion auf den Zielserver gespeichert.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
hedie

Registriert seit: 12. Dez 2005
Ort: Schweiz
1.024 Beiträge
 
Delphi XE6 Starter
 
#9

AW: csv aus Oracle Datenbank extrahieren

  Alt 6. Feb 2015, 07:59
Ich weiß ja nicht was du da genau vorhast und wieviel Speicher die komplette Tabelle verbraucht.

Aber benötigst du die komplette Tabelle? Du hast doch geschrieben, du hast Daten aus unterschiedlichen Tabellen, die irgendwie zusammen müssen.

Ausserdem kann man das auch in Häppchen unterteilen, wenn es für WebServer A oder B zu groß vom Speicher ist. Man muss da nur logisch vorgehen.
  • Zuerst stellt man die Daten zusammen, so wie man die braucht.
  • Dann überlegt man sich das Übertragungsformat (ich präferiere da JSON).
  • Dann schaut man sich an, wieviel RAM die Ausführung benötigt und gibt dem Server mehr zur Verfügung (PHP, Apache haben jeweils ein Session-Limit, was man verändern kann) oder teilt die Übertragung in mehrere Pakete auf.
  • Die Pakete werden auf dem Zielserver in eine Import-Tabelle oder sonst wie zwischengespeichert.
  • Sind alle Pakete da, dann werden diese in korrekter Reihenfolge innerhalb einer Transaktion auf den Zielserver gespeichert.
Die Komplette Tabelle als CSV gespeichert, benötigt ca. 3Mbyte
Ja du hast recht. Ich benötige eigentlich nicht die komplette sondern teile von Tabelle A und Teile von Tabelle B

Somit würde meine Abfrage lauten:
Code:
SELECT XY, ABC, CDE, FGH FROM tabelle
Und dann dies als Array abspeichern. Dies geht mit oci_fetch_all

Dannach dieses wieder im MySQL mit INSERT einfügen.
Die nun leer gebliebenen Spalten, würde ich dann mit UPDATE mit den Daten aus der Oracle Tabelle B befüllen.
Claudio
Tu was du nicht lassen kannst
- http://endasmedia.ch
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

AW: csv aus Oracle Datenbank extrahieren

  Alt 6. Feb 2015, 08:04
Und warum keine Abfrage die dir die Daten komplett liefert?
SQL-Code:
select foo.a, foo.b, bar.c, bar.d
from foo
join bar on bar.a = foo.a
Ist das so ein Hobby von dir, es immer möglichst auf dem umständlichsten Weg zu lösen?
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz