Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Große xml Dateien importieren (https://www.delphipraxis.net/210217-grosse-xml-dateien-importieren.html)

Keldorn 18. Mär 2022 10:39

Große xml Dateien importieren
 
Hallo

Ich komm nicht weiter und brauch ein paar Denkanstöße 😉

Ich muss quasi eine Datenbank importieren
- Die Bereitstellung der Daten erfolgt als xml-Dateien.
- Am Aufbau kann ich nix ändern 😉
- Insgesamt sind es ca. 150 Tabellen
- Es gibt eine XSD Dateien, die alle infos enthält
- Vierteljährlich werden die Grunddaten bereitgestellt, hierbei ist jede Tabelle eine xml Datei
- Größe ist unterschiedlich, die xml reichen von ein paar kb bis zur größten von 1,7GB (ja, kein Schreibfehler GB)
- Täglich werden updates bereitgestellt, diese Dateien enthalten alle Datensätze/Tabellen
- Datenstruktur ist recht flach
<root>
<paar allgemeine InfoDaten>
<Daten-knoten>
<Tabellenname>
<einzelne Felder und Daten…>
im Falle der Grunddaten ist halt immer nur ein Tabelle drin.
Per xml-Datenanbindung hatte ich mir die Klassen erzeugt, für die normalen Dateigrößen und auch die updates klappt das super. Die großen Dateien sind ein problem. Das Einladen dauert Stunden/Tage bevor ich überhaupt zum Parsen komme.
Momentan splitte ich die großen Dateien in mehre kleine Dateien auf und fummele an den Dateien rum, dass sie jeweils gültige xml sind und lade die kleineren Dateien.
Frage ist: ob ich das mit Boardmitteln überghaupt hinbekomme die Dateien als Stück ohne Fummelei zu laden . Ich verrenn mich aber grade, weil ich mir nicht sicher bin, was ich mir gezielt anschauen kann/soll und das auch zum Erfolg führt. Ich würde aber gern beim Standard ohne Fremdkompos bleiben.
Die updates sind nicht so groß, die Einlese-Geschwindigkeit passt. Die Grunddaten vierteljährlich: auch nicht so zeitkritisch, ob das nun 60 oder 70minuten braucht ist, egal, aber es sollte nicht den halben Tag dauern.

- SAX wäre was, aber das geht nicht mit boardmitteln, oder? Der Teil der omnixml der bei delphi mit dabei ist, kann das ja nicht?
- Macht es Sinn sind die großen Dateien als Text sequenziell als Text zu lesen und die Daten zu Fuß auszulesen
- Oder bin ich mit meiner „Fummelei“ gar nicht so verkehrt?
- Himxml hatte ich probiert, ich bekomme aber auch hier mit dem Tree-Demo die große 1,7GB Datei nicht eingelesen --> out of memory

Danke & Gruß Frank

Uwe Raabe 18. Mär 2022 11:44

AW: Große xml Dateien importieren
 
Für so große Dateien sollte man besser auf einen SAX Parser umsteigen. Dabei wird die XML-Datei sequentiell gelesen und entsprechende Ereignisse ausgelöst, auf die man dann entsprechend reagieren kann.

Es mag auch andere geben, aber im Moment fällt mir da nur OXML ein: http://www.kluug.net/oxml.php

peterbelow 18. Mär 2022 12:07

AW: Große xml Dateien importieren
 
Ich kann Uwe da nur zustimmen, SAX ist für solch große Files die Methode der Wahl. Ich habe früher mal Sax für Pascal verwendet und war damit sehr zufrieden.

Keldorn 18. Mär 2022 12:11

AW: Große xml Dateien importieren
 
ok, danke, aber es ist richtig: eben dieser Teil ist bei Delphi im Standard nicht dabei?

Sinspin 18. Mär 2022 12:22

AW: Große xml Dateien importieren
 
Hallo, SAX habe ich auch schon verwendet. Auch um Tabellen einzulesen die etwas größer sind. Wir von verwenden /NSoftware TipwXML.
Keine Ahnung ob es das noch kostenlos bei Delphi dabei ist, wenn ich nicht irre war da mal was.

peterbelow 18. Mär 2022 12:23

AW: Große xml Dateien importieren
 
Zitat:

Zitat von Keldorn (Beitrag 1503603)
ok, danke, aber es ist richtig: eben dieser Teil ist bei Delphi im Standard nicht dabei?

Stimmt.

Uwe Raabe 18. Mär 2022 12:23

AW: Große xml Dateien importieren
 
Zitat:

Zitat von Keldorn (Beitrag 1503603)
ok, danke, aber es ist richtig: eben dieser Teil ist bei Delphi im Standard nicht dabei?

Wenn du die Interfaces für msxml nicht mitzählst, dann nicht. Aber um die zu benutzen wäre auch noch ein gewisser Aufwand nötig.

completestranger 18. Mär 2022 14:53

AW: Große xml Dateien importieren
 
Wohin importieren? RDBMS?

Keldorn 18. Mär 2022 15:55

AW: Große xml Dateien importieren
 
danke euch, ich schau mal, ob ich mit dem SAX weiterkomme

Zitat:

Zitat von completestranger (Beitrag 1503607)
Wohin importieren? RDBMS?

ja, später direkt in eine DB. hab aber nur eine Pro, da fehlt mir auch irgendwo ein Stückchen und ich kann das nicht direkt.
momentan importiere ich es als Zwischenschritt in normale Clientdatasets, die mit der Größe auch nicht klarkommen :roll:

completestranger 18. Mär 2022 15:58

AW: Große xml Dateien importieren
 
Entweder ich bin blind oder es wurde immer noch nicht geschrieben welches RDBMS zum Einsatz kommt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:10 Uhr.
Seite 1 von 3  1 23      

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