![]() |
Datenbank: Oracle • Version: 10 • Zugriff über: wird gesucht
Schneller Zugriff auf Oracle-Datenbank
Hallo,
Ich muss zur Zeit ein Konvertierungsprogramm schreiben, dass die Daten aus einer anderen Datenbank (ADS 8.1) in eine Oracle-Datenbank hinüberschaufeln muss. Die größte Tabelle bei dieser Konvertierung hat ungefähr 7 Millionen Datensätze und ist nur eine von vielen. Von daher suche ich eine Komponente, die es mir erlaubt möglichst schnell die Daten in die Oracle-Datenbank zu übertragen. Bisher geprüft habe ich den Zugriff über ADO und die ODAC-Komponenten unter ![]() Habe auch kurz die Komponenten von von Allautomations mir angesehen, gefallen mir aber nicht so gut, da ich dort kein Tabellen-Objekt habe und alles über Querys abwickeln müsste. Was könnt ihr noch empfehlen? |
Re: Schneller Zugriff auf Oracle-Datenbank
Zitat:
Mit den DevaArt-Komponenten für IB/FB habe ich sehr gute Erfahrungen gemacht. Zudem sollten diese im Oracle-Direct Modus sehr schnell sein |
Re: Schneller Zugriff auf Oracle-Datenbank
Ich könnte dir noch die SQL-Direct Komponenten enpfehlen.
|
Re: Schneller Zugriff auf Oracle-Datenbank
Direkte SQL-Statements sind optimal. Aufbau eines preparet Statements und evtl. noch mehrere INSERTS in einem Execute abschicken und so ein paar Mio. Datensätze sind kein Problem.
Ach ja: Haben DevArt bei MySQL im Einsatz und sind damit zufrieden. |
Re: Schneller Zugriff auf Oracle-Datenbank
Ich habe mit den DOAs von AllroundAutomations nur gute Erfahrungen gemacht. Erklär doch bitte kurz, was ein Tabellenobjekt ist, vielleicht können die das ja doch.
Edith hats selber nachgelesen und kann gemäß diesem Artikel nur davon abraten, TTables zu verwenden: ![]() Und noch ein Edit: Zitat:
|
Re: Schneller Zugriff auf Oracle-Datenbank
Hallo,
für Altertümchen: Die TBatchCopy-Komponente der BDE, wenn's nur einmalig benutzt wird, halt ich das für ok, da pflegeleicht. Ansonsten: Aus den Quelldaten Insertstatements erstellen und die in größerer Stückzahl zusammengefasst per ExecSQL ausführen. Wieviele da gleichzeitig ausgeführt werden können ohne Performanzprobleme zu bekommen, muss Du ausprobieren. Je nach System können es 10 oder 100 oder auch mal 1000(de) sein. Per Insertstatements und ExecSQL hast Du den Vorteil, dass Du in einem Rutsch ja nicht nur eine Tabelle füllen kannst/musst, sondern jedes Statement Daten für eine andere Tabelle enthalten kann. Dadurch kannst Du bei der Befüllung eventuell zu beachtende Abhängigkeiten berücksichtigen. |
Re: Schneller Zugriff auf Oracle-Datenbank
Hallo zusammen,
erst einmal danke für die Hinweise. Also scheine ich mit ODAC-Komponenten schon mal gar nicht so schlecht zu liegen. Warum ich unbedingt ein Tabellen-Objekt haben möchte? Einfach aus Bequemlichkeit :) In der Zieldatenbank sind so viele Felder zu füllen, dass die dazu gehörigen Insert-Statements relativ lang werden. Zudem sind die Feldnamen dermaßen kryptisch, dass sich dabei garantiert mehr als ein Vertipper einschleichen würde. Mit dem Tabellen-Objekt lasse ich mir auch die entsprechenden Felder generieren, kopiere den gesamten Block und mit ein paar Replace-Operationen habe ich vom Compiler prüfbaren typsicheren Code stehen. Der ganze Source besteht damit aus einem dbZiel.Append(); jede Menge lesbarer Zuweisungen; und einem abschließenden dbZiel.Post() Das ganze zu implementieren geht fix und scheint bei den ODAC-Komponenten auch recht performant zu sein. |
Re: Schneller Zugriff auf Oracle-Datenbank
Das Auslesen der Felder und Anlegen von SQL-Abfragen geht aber auch beim Dataset/Query unterstützt. Das ist also kein Grund für eine Tabellenzugriffskomponente.
|
Re: Schneller Zugriff auf Oracle-Datenbank
Verwende bei den ODAC die TSmartQuery, dort kannst du die Update-, Insert-, Delete-Anweisungen etc generieren lassen und bei Bedarf direkt im eigenen Editor bearbeiten.
Grüße Michael |
Re: Schneller Zugriff auf Oracle-Datenbank
Danke für die Hinweise, werde ich mir in den nächsten Tagen mal ansehen.
Habe bisher nur mit XBAse-Datenbanken gearbeitet, daher geht mir das Satzorientierte noch etwas einfacher von der Hand. Werde aber Besserung geloben! Gruß Jörg |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:46 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