Einzelnen Beitrag anzeigen

Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#1

Große xml Dateien importieren

  Alt 18. Mär 2022, 11:39
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

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat