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 2 von 3     12 3      
Keldorn

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

AW: Große xml Dateien importieren

  Alt 18. Mär 2022, 17:12
Entweder ich bin blind oder es wurde immer noch nicht geschrieben welches RDBMS zum Einsatz kommt.
dafür habe ich mich noch nicht schlussendlich entschieden.
Welche Bedeutung hätte das für dich?

Aus meiner aktuellen Sicht ist das erstmal zweitrangig, da ich ich ja den Grundbestand UND die updates behandeln möchte. Ziel ist schon, beides per Programm zu importieren. Nicht weiter tiefer geschaut, sicherlich kann ich eine xml auch direkt in ein DBsystem importieren. Da es aber über 150 Einzeldateien sind, beherrscht das keiner. Das hab ich gedanklich erstmal ausgeschlossen.

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.453 Beiträge
 
Delphi 12 Athens
 
#12

AW: Große xml Dateien importieren

  Alt 18. Mär 2022, 17:22
momentan importiere ich es als Zwischenschritt in normale Clientdatasets, die mit der Größe auch nicht klarkommen
Was insofern auch nicht verwunderlich ist, da diese ja auch alle Daten im Speicher halten - was bei 1,7 GB XML-Daten ja auch mit einem SAX-Parser nicht unbedingt laufen wird.

Ich würde erstmal versuchen das Memory-Problem mit SAX und dem Schreiben in eine CSV-Datei lösen. Dabei sollte man dann aber auch TStreamWriter anstatt TStringList verwenden.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Keldorn

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

AW: Große xml Dateien importieren

  Alt 18. Mär 2022, 17:29
cds: japp, dessen bin ich mir voll bewusst. Eigentliche Datengröße ist ja deutlich kleiner, die xml ist ja durch die <xyz> aufgebläht. Datensätze sind es aber trotzdem genug

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

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

AW: Große xml Dateien importieren

  Alt 19. Mär 2022, 13:32
Entweder ich bin blind oder es wurde immer noch nicht geschrieben welches RDBMS zum Einsatz kommt.
dafür habe ich mich noch nicht schlussendlich entschieden.
Welche Bedeutung hätte das für dich?

Aus meiner aktuellen Sicht ist das erstmal zweitrangig, da ich ich ja den Grundbestand UND die updates behandeln möchte. Ziel ist schon, beides per Programm zu importieren. Nicht weiter tiefer geschaut, sicherlich kann ich eine xml auch direkt in ein DBsystem importieren. Da es aber über 150 Einzeldateien sind, beherrscht das keiner. Das hab ich gedanklich erstmal ausgeschlossen.
Da liegst du meiner Meinung nach gewaltig falsch. Wir importieren maßig, auch bis zu 2.xyz irgendwas GB große XMLs direkt in MSSQL. Es handelt sich dabei um typische EDI Meldungen wie INVOIC, REMADV, DESADV, PRICAT, PRODAT, etc. Die großen Dateien sind in ein paar Sekunden verarbeitet. Es spielt keine Rolle ob es Full- oder Delta-Meldungen sind.
  Mit Zitat antworten Zitat
Benutzerbild von Sinspin
Sinspin

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

AW: Große xml Dateien importieren

  Alt 21. Mär 2022, 07:14
cds: japp, dessen bin ich mir voll bewusst. Eigentliche Datengröße ist ja deutlich kleiner, die xml ist ja durch die <xyz> aufgebläht. Datensätze sind es aber trotzdem genug
Ist das immer XML output oder kannst du das Format auch beeinflussen?
Wenn Du die Daten als auch als CSV bekommen kannst sind erstmal die Dateien kleiner und einfacher, zeilenweise, zu lesen, und verarbeiten lassen sie sich auch deutlich leichter.
Noch besser wäre SQL, selbst wenn es ein anderer Dialekt ist und ein paar Ersetzungen gemacht werden müssen.
Stefan
Nur die Besten sterben jung
A constant is a constant until it change.
  Mit Zitat antworten Zitat
Keldorn

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

AW: Große xml Dateien importieren

  Alt 21. Mär 2022, 11:56
ich nehm jede Anregung gerne auf, sonst hätte ich ja nicht gefragt
bin aber erstmal krank
Da liegst du meiner Meinung nach gewaltig falsch. Wir importieren maßig, auch bis zu 2.xyz irgendwas GB große XMLs direkt in MSSQL. Es handelt sich dabei um typische EDI Meldungen wie INVOIC, REMADV, DESADV, PRICAT, PRODAT, etc. Die großen Dateien sind in ein paar Sekunden verarbeitet. Es spielt keine Rolle ob es Full- oder Delta-Meldungen sind.
DB sind nicht so meins. ich wollte das perspektisisch über firedac aufbauen, damit ich dort unabhängig(er) bin. als DB wollte ich erstmal interbase probieren.
Mit den Sekunden klingt gut, aber da muss ja auch erstmal was dahinterstehen . wenn es SAX ist, dann halt SAX

die updates sind bei mir etwas schwieriger, da werden Datensätze auch geändert, man bekommt ein i(nsert) d(elete) oder u(pdate) mit. Es ist nicht nur ein reines importieren.

Ist das immer XML output oder kannst du das Format auch beeinflussen?
Wenn Du die Daten als auch als CSV bekommen kannst sind erstmal die Dateien kleiner und einfacher, zeilenweise, zu lesen, und verarbeiten lassen sie sich auch deutlich leichter.
Noch besser wäre SQL, selbst wenn es ein anderer Dialekt ist und ein paar Ersetzungen gemacht werden müssen.
ich kann das Format nicht ändern, die Daten werden zur Verfügung gestellt. xml ist evtl nicht so unglücklich, es sind ein paar weniger Felder drin, die als string[500] oder string[2000] definiert sind, da sind sicher auch Zeilenumbrüche drin und da gehts beine csv ja schon wieder los

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

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.464 Beiträge
 
Delphi 12 Athens
 
#17

AW: Große xml Dateien importieren

  Alt 21. Mär 2022, 11:58
Ich würde erst einmal ein Toll für die Kommandozweile schreiben:
- Lesen einer XML-Datei per SAX
- Ausgabe einer SQL-Script-Datei mit den entsprechenden Inserts (ist auch nicht viel anders als CSV-Datei)
Je nach Datenbanksystem alle par 1000 Datensätze ein "Commit;" einfügen, damit das ganze schneller verarbeitet wird und dem Server nicht der Speicher ausgeht. Dann kann man immer noch überlegen ob man diese Funktion und die Ausführung des Skripts in die eigentliche Anwendung integriert.
  Mit Zitat antworten Zitat
completestranger

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

AW: Große xml Dateien importieren

  Alt 21. Mär 2022, 16:24
DB sind nicht so meins. ich wollte das perspektisisch über firedac aufbauen, damit ich dort unabhängig(er) bin. als DB wollte ich erstmal interbase probieren.
Mit den Sekunden klingt gut, aber da muss ja auch erstmal was dahinterstehen . wenn es SAX ist, dann halt SAX

die updates sind bei mir etwas schwieriger, da werden Datensätze auch geändert, man bekommt ein i(nsert) d(elete) oder u(pdate) mit. Es ist nicht nur ein reines importieren.
war nur ein vorschlag. die inserts, deletes und updates sind gar kein problem, weil es dann bereits daten im sql server wären und die lassen sich zusammen-joinen, etc.
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.295 Beiträge
 
Delphi 12 Athens
 
#19

AW: Große xml Dateien importieren

  Alt 21. Mär 2022, 16:49
Als SAX-Parser werfe ich mal den von Stefan Heymanns in den Ring. Verwende ich seit Jahren (Jahrzehnten).

http://www.destructor.de/xmlparser/index.htm

Dort nach TXMLScanner schauen.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.605 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#20

AW: Große xml Dateien importieren

  Alt 21. Mär 2022, 17:15
MSXML kann übrigens auch SAX. Ist auch ziemlich schnell, nur das Fehlerhandling ist wie immer bei COM eine Katastrophe, was die übliche Fehlermeldung ja auch schon sagt: "catastrohic failure"
Thomas Mueller
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 19:52 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