Einzelnen Beitrag anzeigen

DelphiProgrammierer

Registriert seit: 11. Apr 2007
67 Beiträge
 
Delphi 2007 Professional
 
#28

Re: Datei > 500mb vollständig in RAM laden

  Alt 3. Jul 2007, 06:33
Ich möchte ergänzen, dass es auch den T-SQL-Befehl BULK INSERT gibt, mit dem man eine Datei importieren kann.


Zitat von alzaimar:
Zitat von Harry M.:
Jeder (JEDER) Versuch ein eigenes, auf eine spezielle App angepasstes, DBMS zu basteln, der mir bisher unter die Augen kam, war bestenfalls jämmerlich.
Also ich hab mal eine B-Tree-Implementierung zusammengebaut, die ca. 500.000 Schlüssel/Wert-Paare (Schlüssel=String[8], Wert = 64 Byte) speichern und auf der Platte ablegen konnte. Das kann keine richtige DB. Es geht also, wenn man will (War im Rahmen einer Messdatenerfassung von einem CAN-Bus. Der Schlüssel enthielt dabei u.a. Zeit und Kanal-Nummer).

Es gibt mehrere Möglichkeiten, Daten sehr schnell in einem richtigen DBMS abzulegen. Da ich MSSQL verbunden bin, kann ich nur für diese DB sprechen:

Möglichkeit 1 (geht vermutlich für alle DB).
Du sammelst die INSERT-Anweisungen in einem String, bis dieser max. 1000 Zeichen lang ist und bläst diese über die Execute-Methode der ADO-Connection zur DB.

Möglichkeit 2: Du verwendest BCP.EXE (Bluk Copy Program) von Microsoft. Das ist bei jedem Server dabei. Es handelt sich um ein Kommandozeilentool, das speziell formatierte Textdateien sehr schnell (>10000 Recs per second) reinsaugt.

Ich würde #2 nehmen und nur wenn du wirklich Performance brauchst, eine selbstgefrickelte Lösung implementieren. Diese B-Tree-Geschichte war nicht Ohne.
  Mit Zitat antworten Zitat