![]() |
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 |
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: ![]() |
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
![]() |
AW: Große xml Dateien importieren
ok, danke, aber es ist richtig: eben dieser Teil ist bei Delphi im Standard nicht dabei?
|
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. |
AW: Große xml Dateien importieren
Zitat:
|
AW: Große xml Dateien importieren
Zitat:
|
AW: Große xml Dateien importieren
Wohin importieren? RDBMS?
|
AW: Große xml Dateien importieren
danke euch, ich schau mal, ob ich mit dem SAX weiterkomme
Zitat:
momentan importiere ich es als Zwischenschritt in normale Clientdatasets, die mit der Größe auch nicht klarkommen :roll: |
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 10:55 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 by Thomas Breitkreuz