AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Schneller Zugriff auf Oracle-Datenbank
Thema durchsuchen
Ansicht
Themen-Optionen

Schneller Zugriff auf Oracle-Datenbank

Ein Thema von hsg · begonnen am 13. Jan 2009 · letzter Beitrag vom 14. Jan 2009
Antwort Antwort
hsg

Registriert seit: 24. Apr 2006
Ort: Wustermark
354 Beiträge
 
Delphi 10.3 Rio
 
#1

Schneller Zugriff auf Oracle-Datenbank

  Alt 13. Jan 2009, 06:31
Datenbank: Oracle • Version: 10 • Zugriff über: wird gesucht
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 http://www.devart.com/odac
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?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Schneller Zugriff auf Oracle-Datenbank

  Alt 13. Jan 2009, 06:40
Zitat:
Habe auch kurz die Komponenten von von Allautomations mir angesehen, gefallen mir aber nicht so gut, da ich dort kein Tabellen-Objekt
Interessante Kombination TxxTable und schnell.
Mit den DevaArt-Komponenten für IB/FB habe ich sehr gute Erfahrungen gemacht. Zudem sollten diese im Oracle-Direct Modus sehr schnell sein
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von spaxxn
spaxxn

Registriert seit: 19. Nov 2004
253 Beiträge
 
Delphi XE2 Enterprise
 
#3

Re: Schneller Zugriff auf Oracle-Datenbank

  Alt 13. Jan 2009, 06:49
Ich könnte dir noch die SQL-Direct Komponenten enpfehlen.
"Hey Süße,
hol mir mal was zu trinken! Du wirst schon wieder hässlich!"

Zitat eines Betrunkenen
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Schneller Zugriff auf Oracle-Datenbank

  Alt 13. Jan 2009, 07:22
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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.763 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Schneller Zugriff auf Oracle-Datenbank

  Alt 13. Jan 2009, 07:50
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: http://www.protech-ndh.de/Publikatio.../2/index.htm#2.
Und noch ein Edit:
Zitat:
You will have the most problems if you have used a "TTable approach". SQL Servers don't really like the TTable component, because its concepts are not really appropriate for SQL, which is a set oriented language. If you use the 10 TwwTables to navigate through large tables, then you will have to do some redesign...

------------------
Marco Kalter
Allround Automations
Sherlock
Oliver
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#6

Re: Schneller Zugriff auf Oracle-Datenbank

  Alt 13. Jan 2009, 09:05
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.
  Mit Zitat antworten Zitat
hsg

Registriert seit: 24. Apr 2006
Ort: Wustermark
354 Beiträge
 
Delphi 10.3 Rio
 
#7

Re: Schneller Zugriff auf Oracle-Datenbank

  Alt 14. Jan 2009, 06:18
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.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Schneller Zugriff auf Oracle-Datenbank

  Alt 14. Jan 2009, 06:40
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.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von mikhal
mikhal

Registriert seit: 11. Sep 2003
Ort: Linz am Rhein
796 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Schneller Zugriff auf Oracle-Datenbank

  Alt 14. Jan 2009, 08:14
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
Michael Kraemer
Computer erleichtern die Arbeit...
...und die Erde ist eine Scheibe!
  Mit Zitat antworten Zitat
hsg

Registriert seit: 24. Apr 2006
Ort: Wustermark
354 Beiträge
 
Delphi 10.3 Rio
 
#10

Re: Schneller Zugriff auf Oracle-Datenbank

  Alt 14. Jan 2009, 11:12
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
  Mit Zitat antworten Zitat
Antwort Antwort


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 23:22 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