![]() |
Re: Firebird Import aus Textdatei extrem langsam
Zitat:
Zitat:
|
Re: Firebird Import aus Textdatei extrem langsam
Zitat:
wie meinst du das? |
Re: Firebird Import aus Textdatei extrem langsam
Wenn die Daten in der Datenbank sind, kannst du sie doch wesentlich einfacher per SQL formen, weiterverarbeiten und analysieren, als wenn du alles selber programmieren musst. Der Aufwand entfällt dann und du kannst alles über einfaches SQL lösen.
|
Re: Firebird Import aus Textdatei extrem langsam
So, ich habe das jetzt mal selber ausprobiert...
Code:
Also für einen Datensatz ca. 18µs (auf meiner Maschine = P4, 3GHz)
1.000.000 Zeilen = 0:18 (Datei = 16MB)
1.000.000.0 Zeilen = 2:48 (Datei = 166MB) |
Re: Firebird Import aus Textdatei extrem langsam
Delphi-Quellcode:
Ich würde die Query nur einmal zu Beginn des Einlesens erzeugen und den SQL-Text zuweisen, dabei dann mit Parametern arbeiten:with DM_User.SQLQueryTemp do begin with SQL do begin Clear; Add(sqltxt); end; ExecSQL(true); end;
SQL-Code:
In der Einleseschleife dann die Parameter zuweisen und ExecSQL aufrufen. Vorteil: die Query wird vom Server nur einmal erzeugt und dann für jedes Insert wiederverwendet. ("Prepared Statement").
insert into tabelle(f1, f2, f3, ...) values (:f1, :f2, :f3, ...)
Eventuell hilft es auch noch, die ganze Sache in einer Transaktion laufen zu lassen. Viele Grüße, |
Re: Firebird Import aus Textdatei extrem langsam
Und eine explizite Transaktionssteuerung verwenden. Denn sonst wird dank autocommit jeder Insert insert in eine eigene Transkation gepackt.
|
Re: Firebird Import aus Textdatei extrem langsam
Zitat:
und wie macht man das mit der expliziten Transaktionssteuerung? |
Re: Firebird Import aus Textdatei extrem langsam
Mit dbExpress kenne ich mich nicht aus, aber versuche mal
SQLConnection.StartTransaction() und SQLConnection.Commit() |
Re: Firebird Import aus Textdatei extrem langsam
StartTransaction erwartet einen "benutzerdefinierten Transaktionsbezeichner" - was ist denn damit gemeint??
und wie macht man das? |
Re: Firebird Import aus Textdatei extrem langsam
Zitat:
wie war das nochmal mit den Params? wie ordne ich denen Werte zu? geht das mit
Delphi-Quellcode:
und muss ich das Prepare selbst auslösen?
SQLQuery.Params[0].Value:='blabla';
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:30 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