AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Große xml Dateien importieren

Ein Thema von Keldorn · begonnen am 18. Mär 2022 · letzter Beitrag vom 28. Mär 2022
Antwort Antwort
Seite 1 von 3  1 23      
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, 10: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
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.000 Beiträge
 
Delphi 12 Athens
 
#2

AW: Große xml Dateien importieren

  Alt 18. Mär 2022, 11:44
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
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
672 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Große xml Dateien importieren

  Alt 18. Mär 2022, 12:07
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.
Peter Below
  Mit Zitat antworten Zitat
Keldorn

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

AW: Große xml Dateien importieren

  Alt 18. Mär 2022, 12:11
ok, danke, aber es ist richtig: eben dieser Teil ist bei Delphi im Standard nicht dabei?

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

Registriert seit: 15. Sep 2008
Ort: Dubai
614 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Große xml Dateien importieren

  Alt 18. Mär 2022, 12:22
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.
Stefan
Nur die Besten sterben jung
A constant is a constant until it change.
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
672 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Große xml Dateien importieren

  Alt 18. Mär 2022, 12:23
ok, danke, aber es ist richtig: eben dieser Teil ist bei Delphi im Standard nicht dabei?
Stimmt.
Peter Below
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.000 Beiträge
 
Delphi 12 Athens
 
#7

AW: Große xml Dateien importieren

  Alt 18. Mär 2022, 12:23
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.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
completestranger

Registriert seit: 7. Okt 2018
25 Beiträge
 
#8

AW: Große xml Dateien importieren

  Alt 18. Mär 2022, 14:53
Wohin importieren? RDBMS?
  Mit Zitat antworten Zitat
Keldorn

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

AW: Große xml Dateien importieren

  Alt 18. Mär 2022, 15:55
danke euch, ich schau mal, ob ich mit dem SAX weiterkomme

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

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

Registriert seit: 7. Okt 2018
25 Beiträge
 
#10

AW: Große xml Dateien importieren

  Alt 18. Mär 2022, 15:58
Entweder ich bin blind oder es wurde immer noch nicht geschrieben welches RDBMS zum Einsatz kommt.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 10:08 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