ORACLE DUMP-File -> mysql importieren
Henny
- datenbank
0 Christian Seiler0 Henny
0 Klaus Mock0 Ralf Rapude
Hallo alle!
Ich müsste Daten eines Dump-Files einer ORACLE Datenbank in meine MySQL-datenbank imortieren.
Ist das möglich?
Brauche ich dazu ein zusätzliches Script?
BZW. gibt es einen besseren Weg Daten einer Oracle-Datenbank in eine Mysql-Datenbank zu importieren??
lg, henny
Hallo Henny,
Ich müsste Daten eines Dump-Files einer ORACLE Datenbank in meine MySQL-datenbank imortieren.
Ist das möglich?
Was verstehst Du unter einem Oracle-Dump-File? So etwas, das von »exp« erzeugt wird? Nein, das dürfte nicht funktionieren. So eine Datei ist eine Binärdatei mit eingebetteten SQL-Statements, zumindest ist meine Kenntnis so. (ewig nichts mehr mit Oracle gemacht) Du könntest versuchen, die SQL-Statements zu extrahieren, aber selbst dann wird es Probleme geben, denn Oracle verwendet tonnenweise Features von denen MySQL nicht einmal die gerinste Ahnung hat. (auch wenn Du sie selbst nicht direkt verwendest, Oracle baut sie automatisch in die Exportdateien ein)
Wie wäre es denn, wenn Du den Inhalt der einzelnen Tabellen als CSV exportierst und dann wieder importierst? So würde ich das zumindest versuchen, scheint mir die simpelste Lösung.
Christian
Hallo Christian!
Danke für die rasche Antwort.
Frage: Kann ich Daten aus der Oracle-Datenbank als csv exportieren? (Kenn' mich mit ORACLE überhaupt nicht aus, mit mysql ein wenig.)
Oder muß ich hier den Umweg über Excel machen?
Mein Problem ist, dass ich jede Menge von Daten habe. Genauer gesagt Halbstundenwerte von Windgeschwindigkeit und Richtung über 15 Jahre von 50 Stationen.
So weit ich informiert bin kann Excel max. 65000 Zeilen einlesen.
Henny
Hallo Henny,
Ich müsste Daten eines Dump-Files einer ORACLE Datenbank in meine MySQL-datenbank imortieren.
Ist das möglich?Was verstehst Du unter einem Oracle-Dump-File? So etwas, das von »exp« erzeugt wird? Nein, das dürfte nicht funktionieren. So eine Datei ist eine Binärdatei mit eingebetteten SQL-Statements, zumindest ist meine Kenntnis so. (ewig nichts mehr mit Oracle gemacht) Du könntest versuchen, die SQL-Statements zu extrahieren, aber selbst dann wird es Probleme geben, denn Oracle verwendet tonnenweise Features von denen MySQL nicht einmal die gerinste Ahnung hat. (auch wenn Du sie selbst nicht direkt verwendest, Oracle baut sie automatisch in die Exportdateien ein)
Wie wäre es denn, wenn Du den Inhalt der einzelnen Tabellen als CSV exportierst und dann wieder importierst? So würde ich das zumindest versuchen, scheint mir die simpelste Lösung.
Christian
Hallo Henny,
Frage: Kann ich Daten aus der Oracle-Datenbank als csv exportieren?
Mit Google habe ich das hier gefunden: http://srmwww.gov.bc.ca/gis/dbf2ora.html
Die hatten da gar keine so schlechte Idee:
---------------------------------
spool species.csv
set termout off
set pagesize 0
set heading off
set feedback off
select species||','||count||','|| rating from species_ratings;
quit
---------------------------------
Die geben praktisch lauter einzelnen Zeilen, die sie über SELECT rausfischen, in eine Datei aus. Dazu basteln sie sich einfach im Select-Statement das Datenformat zusammen. Ich würde es aber so machen:
select '"'||replace(spalte1,'"', '"')||'","'||replace(spalte2,'"', '"')||'"' from tabelle;
Die Syntax sieht etwas seltsam aus, im Prinzip sieht das Ergebnis dann so aus:
"{SPALTE1}","{SPALTE2}"
wobei statt {SPALTE1} bzw. {SPALTE2} dann halt der enstprechende Inhalt steht, bei dem jedoch " durch " ersetzt wurde. (damit die CSV-Datei auch wirklich konsistent ist)
Das ganze ist ein bisschen ein gefummele, Du solltest es vielleicht auf einer 10-Zeilen-Testtabelle mit der gleichen Struktur ausprobieren, bevor Du es auf die komplette Tabelle loslässt.
Die CSV-Datei kannst Du dann in MySQL statt Excel importieren, lies dazu mal die MySQL-Dokumentation.
So weit ich informiert bin kann Excel max. 65000 Zeilen einlesen.
Richtig, MySQL müßte aber so viele Daten packen.
Christian
P.S.: Und behalte auf jeden Fall den »normalen« Oracle-Dump - falls etwas schiefgeht und Du es erst in ein paar Wochen merkst, hast Du dann die Daten noch sicher.
Danke euch allen für die tollen Tipps!
Ich glaube ich komme damit weiter!!!!
Schönen Fasching noch!!
henny
Hallo,
BZW. gibt es einen besseren Weg Daten einer Oracle-Datenbank in eine Mysql-Datenbank zu importieren??
Du könntest beispielsweise, einige entsprechende Kenntnisse vorausgesetzt, so etwas mit Perl machen.
Es gibt für beide Datenbanken Treiber-Module für DBI. Damit könntest Du aus einer Datenbank lesen, und in die andere schreiben, oder aber auch passende SQL-Statements generieren, die DU dann in eine Datei schreibst.
Mit etwas mehr, aber nicht viel mehr, Aufwand könnte das dann auch für eine zyklische Übertragung zu gebrauchen sein.
Aber auch irgendeine andere Sprache, für die es Schnittstellen zu beiden Datenbankenb gibt, würde sich für diesen Anwendungsfall eignen.
Falls Du Zugriff zu einem Tool wie Toad hast, könntest Du die Daten auch damit als SQL-Script exportieren. Das sollte auch gegen eine mySQL-Datenbank ausführbar sein. Neben dem kostenpflichtigen Toad gibts da auch noch ein Tool namens Tora, das zumoindest unter Unix/Linux kostenfrei ist, und diese Übung afaik auch beherrscht.
Grüße
Klaus
Hi,
ein Oracle dump läßt sich mit Sicherheit nicht importieren (wenns wie vom Vorredner schon gesagt über exp80) erzeugt wurde, denn die Datei ist nicht nur binär, sondern enthält auch user und alle andere Objekte wie views, Procedures usw. Ich könnte mir aber auch vorstellen, dass es tools von Drittherstellern gibt, die es ermöglichen, einfach nur ein CSV anzulegen. Das Problem ist und bleibt aber, dass Oralce Datenbanken nicht nur aus den Tabellendaten bestehen, sondern aus einer Unzahl von Objekten um diese reinen Daten drumrum. Das heißt, du hättest dann vielleicht die reinen Daten, aber die komplette Logik, die teilweise nötig sein könnte, um views usw. zu erzeugen, fehlt.
Gruß
Ralf