Entwickler-Ecke

Datenbanken - Daten aus Excel in Oracle einlesen


Ayumi - Mi 20.04.05 10:27
Titel: Daten aus Excel in Oracle einlesen
Hallo,

ich arbeite erst seit kurzem mit Delphi und soll jetzt eine Anwendung schreiben die Daten automatisch aus Excel in eine Oracle Datenbank einliest. Als Delphi-Frischling habe ich gerade gar keine Idee wie ich vorgehen könnte. Kann mir jemand Code-bsp geben an denen ich mich orientieren könnte? (z.B. wie ich eine bestimmtes Wort aus einer Excel Spalte an die richtige Stelle in der Datenbank einlese) Ich habe schon in verschiedenen Büchern gesucht, aber nichts annäherend passendes gefunden.

Vielen lieben Dank im Voraus
Ayumi


Guzzman - Mi 04.05.05 17:16
Titel: Re: Daten aus Excel in Oracle einlesen
Hi,

ich sehe dabei zwei Baustellen: Zum einen musst du die Daten aus Excel holen (mittels OLE) und diese dann mittels SQL in Oracle speichern.

Was mich dabei auch interessieren würde ist die Frage ob es auch nicht eine direkte Möglichkeit gibt, Exceldaten in Oracle zu speichern (z.B. mit TOAD).


Ciao


Stefan.Buchholtz - Mi 04.05.05 17:27
Titel: Re: Daten aus Excel in Oracle einlesen
user profile iconGuzzman hat folgendes geschrieben:
Hi,

ich sehe dabei zwei Baustellen: Zum einen musst du die Daten aus Excel holen (mittels OLE) und diese dann mittels SQL in Oracle speichern.

Was mich dabei auch interessieren würde ist die Frage ob es auch nicht eine direkte Möglichkeit gibt, Exceldaten in Oracle zu speichern (z.B. mit TOAD).

Ciao


Meiner Meinung nach ist das mit OLE nicht unbedingt das einfachste. Ich würde die Tabelle aus Excel als CSV-Datei abspeichern und dann ein kleines Import-Tool schreiben, das die Daten in die Datenbank schiebt.

Wenn es sich um eine einmalige Aktion handelt, so dass es sich nicht lohnt, ein Programm dafür zu schreiben, kann man auch mit den Textmanipulations-Funktionen von Excel SQL-Anweisungen erzeugen, die man dann einfach mit dem SQL Explorer (oder anderem DB-Tool deiner Wahl) ausführt.

Stefan


eddyp - Mi 04.05.05 22:33

... die Lösung über die CSV- Datei ist sicher die einfachste Variante. Es würde auch gehen die Daten im Excel direkt auszulesen, aber da ist das Format von excel- Version zu Excelversion verschieden und das müsste man berücksichtigen. Aber bei Bedarf kann ich ein paar Hinweise geben, da ich mal den umgekehrten Fall delphi- excel hatte.


jasocul - Do 05.05.05 10:12

Man kann natürlich auch noch eine ODBC-Verbindung zur Excel-Datei definieren und diese dann benutzen.


eddyp - Do 05.05.05 16:14

... ODBC ist aber sehr langsam habe ich mal bemerkt, zumindest bei großen Dateien oder hatte ich was anderes falsch gemacht?


jasocul - Do 05.05.05 18:09

user profile iconeddyp hat folgendes geschrieben:
... ODBC ist aber sehr langsam habe ich mal bemerkt, zumindest bei großen Dateien oder hatte ich was anderes falsch gemacht?

ODBC ist zumindest schneller als BDE :mrgreen:

Du solltest den ODBC-Zugriff wie folgt konfigurieren:
- Read-Only-Modus
- Falls möglich, exclusiv

Das sollte die "höchste" Performanz bringen. Excel ist eben keine Datenbank.


eddyp - Do 05.05.05 18:48

... ich meine das anders. Ich hatte eine Datei von der AS400 mit Daten als Text erstellt (geht blitzartig, auf der AS400). Diese habe ich am PC mittels Delphi direkt in eine Exceldatei geschrieben, also direkt eine *.XLS- Datei erzeugt [mit all den komischen Zeilen ;-) ]. Das ging viel schneller als die Daten per ODBC von der AS400 zu lesen.

(Ich hätte für den Zweck auch einfach eine CSV schreiben können, aber es sollte danach im (Delphi-)Programm auch noch eine Excel- Anwendung gestartet werden, welche die XLS verarbeitet und einem "unbedarften" Nutzer die ausgewerteten Daten in der Excelanwendung zur Verfügung stellt.)

Und das denke ich kann man umgedreht doch auch - die *.XLS- Datei lesen und die Daten daraus direkt schreiben wohin wann sie braucht (zB. in Oracle- Datei) Ist zwar aufwendig, aber geht wahnsinnig schnell, denke ich.


eddyp - Do 05.05.05 18:48

PS. also alles ohne BDE ...