AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Firedac als JSON ohne Feldbezeichner exportieren
Thema durchsuchen
Ansicht
Themen-Optionen

Firedac als JSON ohne Feldbezeichner exportieren

Ein Thema von Kostas · begonnen am 21. Apr 2023 · letzter Beitrag vom 25. Apr 2023
 
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.115 Beiträge
 
Delphi 12 Athens
 
#11

AW: Firedac als JSON ohne Feldbezeichner exportieren

  Alt 24. Apr 2023, 17:14
Das MARS Projekt nutzt ebenfalls Elemente von mormot. Um meine Installation nicht zu beschädigen werde ich die Tage ein SnapShot machen, mormot installieren und den Test durchführen. Es dauert noch etwas bis ich dazu kommen aber du bekommst den Benchmark.
Danke für den Test. Meine Lösung von gestern Abend war etwas verspielt. Ich dachte, es ist eine selten genutzte Funktion und damit eine gute Gelegenheit etwas Ausgefallenes aus der mORMot Bibliothek vorzustellen. Die schnellen TextWriter Klassen von mORMot hatte ich im Forum schon vorgestellt, sind hier aber die richtige Wahl. Die Klasse TJsonWriter aus der Unit mormot.core.json ist in meinen Tests größer Faktor 400 schneller als die Delphi Klasse TJsonTextWriter. Für 500K Datensätze ist die Laufzeit kleiner 100 Millisekunden und damit ca. Faktor 4 schneller als mein erster Vorschlag Variant-Array. Das wird deinem Vorhaben einen zusätzlichen Push geben. Schreibe es so:
Delphi-Quellcode:
qrPersonen.First;
var run: Integer := 1;
var w: TJsonWriter := TJsonWriter.CreateOwnedFileStream(MakePath([Executable.ProgramFilePath, 'data.json']));
try
  w.Add('[');
  while not qrPersonen.EoF do
  begin
    w.Add('[');
    w.AddCsvConst([run,
      qrPersonen.Fields[idxPersonID].AsLargeInt;
      qrPersonen.Fields[idxName].AsString;
      qrPersonen.Fields[idxTitel].AsString;
      qrPersonen.Fields[idxVorname].AsString;
      qrPersonen.Fields[idxGeburtsdatum].AsString;
      qrPersonen.Fields[idxPersonalNr].AsString;
      qrPersonen.Fields[idxEintrittsjahr].AsInteger;
      qrPersonen.Fields[idxFachNr].AsLargeInt;
      qrPersonen.Fields[idxFach].AsString
    ]);
    w.Add(']');
    w.AddComma;
  end;
  w.CancelLastComma;
  w.Add(']');
finally
  w.FlushFinal;
  w.Free;
end;
Bis bald...
Thomas
Hi Thomas,

ich installiere Mormot V2 oder? https://github.com/synopse/mORMot2
  Mit Zitat antworten Zitat
 


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 17:06 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-2025 by Thomas Breitkreuz