![]() |
Datenbank: Oracle • Version: 11g • Zugriff über: ODBC/Direkt
csv aus Oracle Datenbank extrahieren
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:
Nach dem ich diese CSVs habe, muss ich einige Spalten entfernen, und gewisse Spalten aus dem einen CSV in das andere importieren.
SELECT * FROM TABLE
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! |
AW: csv aus Oracle Datenbank extrahieren
Etwas Ähnliches hatten wir doch gerade erst:
![]() [edit] Oracle kann doch von sich aus bereits nach CSV exportieren: ![]() |
AW: csv aus Oracle Datenbank extrahieren
Zitat:
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: ![]() 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] ![]() Danke! |
AW: csv aus Oracle Datenbank extrahieren
Ich habe Delphi Starter.
Deshalb kann ich ADODB nicht verwenden :( |
AW: csv aus Oracle Datenbank extrahieren
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? |
AW: csv aus Oracle Datenbank extrahieren
Zitat:
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 :stupid: |
AW: csv aus Oracle Datenbank extrahieren
Zitat:
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? |
AW: csv aus Oracle Datenbank extrahieren
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.
|
AW: csv aus Oracle Datenbank extrahieren
Zitat:
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:
Und dann dies als Array abspeichern. Dies geht mit oci_fetch_all
SELECT XY, ABC, CDE, FGH FROM tabelle
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. |
AW: csv aus Oracle Datenbank extrahieren
Und warum keine Abfrage die dir die Daten komplett liefert?
SQL-Code:
Ist das so ein Hobby von dir, es immer möglichst auf dem umständlichsten Weg zu lösen? :gruebel:
select foo.a, foo.b, bar.c, bar.d
from foo join bar on bar.a = foo.a |
AW: csv aus Oracle Datenbank extrahieren
Zitat:
Man lernt ja bekanntlich nie aus :) ist mit foo die Tabelle und mit .a die Spalte gemeint? und was ist bar? Ich sollte dazu noch erwähnen, dass ich auf der Oracle Datenbank ausschliesslich lese rechte habe. |
AW: csv aus Oracle Datenbank extrahieren
Also wenn ich mit einem System arbeite (arbeiten will), dann informiere ich mich, wie das zu bedienen ist. Informationsquellen zum Thema SQL gibt es wie Sand am Meer. Dort wird bis zum Erbrechen auf das SELECT-Statement erklärt mit all seinen Möglichkeiten.
Zum Aus- und Einlesen: Um die Daten vom Oracle-Server abzufragen würde ich das PHP-Skript dazu bringen die Daten als JSON zurück zu liefern. Das geht bei PHP mit einem Befehl. Um die Daten in den MySQL-Server zu übertragen, würde ich das Skript dazu bringen die Daten als JSON zu akzeptieren. Intern entpackt man das von JSON wieder in ein assoziatives Array (ein Befehl bei PHP) und geht dann durch das Array und bläst es in den MySQL Server. (JSON ist kompakt und human-readable, jedes andere Format wie z.B. XML o.ä. sind natürlich auch denkbar) Und schwups ist es völlig schnuppe, woher deine Daten kommen. |
AW: csv aus Oracle Datenbank extrahieren
Wenn's da Lücken im Oracle knowHow gibt, kannst du sie hier füllen:
![]() ![]() Übrigens, etwas nicht zu wissen ist keine Schande. Schlimm wird's erst wenn man nicht fragt. Gruß K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz