![]() |
Re: Firebird Import aus Textdatei extrem langsam
Zitat:
|
Re: Firebird Import aus Textdatei extrem langsam
Halo,
also ich gehe ohne SQL-Monitor nicht aus dem Haus. Ausserdem: Wenn es eine einmalige Sache ist, sch** auf die Zeit ;) Heiko |
Re: Firebird Import aus Textdatei extrem langsam
Liste der Anhänge anzeigen (Anzahl: 1)
So ich habe mich jetzt nochmal dran versucht.
Zitat:
Zitat:
Die Zeiten die ich oben angegeben hatte, hatte ich mit FlameRobin ausprobiert und eben nicht in Delphi. Das sollte eigentlich auch kein Problem darstellen, allerdings darf für meinen Vorschlag die Option "ExternalFileAccess" nicht auf None stehen. Dies ist die Voreinstellung und kann über die firebird.conf geändert bzw. überschrieben werden. Mit FlameRobin funktioniert das auch, aber eben leider nicht, wenn man selber aus Delphi heraus auf Firebird (Emmbedded) zugreift (vielleicht kann mir ja einer verraten wie das geht). Deshalb konnte ich leider nicht meinen ersten Vorschlag umsetzen. Zitat:
|
Re: Firebird Import aus Textdatei extrem langsam
Hallo,
Also
Delphi-Quellcode:
du rufst nach jedem Insert Application.ProcessMessages; auf.
SQLDataSet.ExecSQL;
Application.ProcessMessages; Ich würde das ändern in
Delphi-Quellcode:
Da du ja hier eh einen Zähler (Fzeile) hast,
if (FZeile mod 100) then
begin Application.ProcessMessages; end; könnte man auch den Tip mit Commit/StartTransaction einbauen
Delphi-Quellcode:
Zusammen also wie folgt:
if (FZeile mod 100) then
begin SQLConnection.Commit(TD); SQLConnection.StartTransaction(TD); end;
Delphi-Quellcode:
Ich würde es so wie hier getrennt lassen,
if (FZeile mod 100) then
begin Application.ProcessMessages; end; if (FZeile mod 100) then begin SQLConnection.Commit(TD); SQLConnection.StartTransaction(TD); end; dann kann man am mod X noch rumspielen. Zitat:
das Programm sollte im Idealfall davon gar nix mitbekommen. Exe -> FBClient(SQL-Server) -> SQL-Server Exe -> FBClient(Embedded) Die embedded-Variante der FBClient-Dll implementiert den SQL-Server selber und reicht die Befehle nicht weiter wie die normale DLL. Zusätzlich müssen noch ein paar Dateien in ein Unterverzeichnis, Infos dazu hier (Suche) oder einfach mal Frau Google fragen. Heiko |
Re: Firebird Import aus Textdatei extrem langsam
und wenn du deinen import noch mal richtig beschleunigen willst, dann bau in deinem Delphi Programm deine Textdatei auf ein fixedformat um (also pro spalte eine feste anzahl an zeichen, nicht genutzte mit Leerzeichen auffüllen). Danach schaust du dir die Deaklaration eines external files in Firebird an (geht in IBExpert mit einem assisetnten im Table editor, wichtig: in der Firebird conf vorher ein directory für external files freigeben.
im sql editor geht das auch direkt create table imp external file 'C:\imp.txt' (ID CHAR(18), TXT1 CHAR(80), TXT2 CHAR(80), TXT3 CHAR(80), CRLF CHAR(2)) usw, dann kannst du mit "insert into tabx select * from imp" extrem schnell daten importieren, je nach hardware durchaus bis 100.000 records pro sekunde! alternativ ab fb2 einfach dein SQL mit execute block as insert .....; insert .....; insert .....; ..... insert .....; insert .....; end aufbauen, damit gehen mehrere Inserts pro sql aber immer wichtig: aktive Transaktionssteuerung |
Re: Firebird Import aus Textdatei extrem langsam
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Was soll das? Habt ihr auch mal gelesen, was ich geschrieben habe? Habt ihr auch mal eure Vorschläge ausprobiert? Ich versuche hier zu helfen, in diesem Fall mal wieder mit einem konkreten Beispiel, wie wäre mit konkreten Vorschlagen/Erweiterungen/Verbesserungen und eigenen Tests. Wenn man das so ließt, meint ihr wohl, ich bin da der totale Volldepp. (Eben nicht! ich bin der, der es ausprobiert hat!) Und da ihr ja alle so schlau seit, werde ich jetzt nichts mehr zum Thema sagen. |
Re: Firebird Import aus Textdatei extrem langsam
warum sollte ein create table mit external file aus delphi heraus nicht funktionieren? das mach ich andauernd.
Das external file sollte immer eine temporäre tabelle sein, die dann z.B. via "update or insert" oder stored proc in die reale tabelle übertragen wird. Ich will keineswegs deine Postings kritisieren und das man den einen oder anderen Eintrag 4 seiten vorher mal übersieht ist ja auch möglich oder? Von volldeppen spricht hier keiner, ich jedenfalls nicht. nicht jeder Input aus diesem Forum hat den Anspruch 100% sauberen kompilierbaren code zu liefern, weil nicht jeder die zeit dazu hat, das für jede Anfrage umzusetzen. Wenn du das zu jedem deiner Postings machst finde ich das sehr lobenswert. das nur dazu, und meinen Hinweis auf execute block ist auch problemlos innerhalb von Delphi benutzbar, jedenfalls mit brauchbaren aktuellen Zugriffskomponenten. |
Re: Firebird Import aus Textdatei extrem langsam
Zitat:
|
Re: Firebird Import aus Textdatei extrem langsam
Zitat:
|
Re: Firebird Import aus Textdatei extrem langsam
Zitat:
Zusatz: Zugriff über DBExpress (so wie der TE auf die DB zugreift) Darauf wird natürlich mit keiner einzigen Silbe mal eingegangen, echt bedauerlich. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:33 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