![]() |
Re: Firebird Import aus Textdatei extrem langsam
Hallo,
hast Du schonmal probiert, was passiert, wenn Du mehrere Insert gleichzeitig absetzt? Davon ausgehend, dass das in einer Schleife passiert:
Delphi-Quellcode:
einmal in der Art ändern:
with DM_User.SQLQueryTemp do
begin with SQL do begin Clear; Add(sqltxt); end; ExecSQL(true); end;
Delphi-Quellcode:
dann wird alle 100 Datensätze das Insert für diese Sätze abgesetzt. Bei der 100 kannst Du dann auch ausprobieren, ob eine größere oder kleinere Anzahl von Sätzen die Geschwindigkeit erhöht oder verringert.
DM_User.SQLQueryTemp.Sql.Clear;
... // irgendeine Schleife with DM_User.SQLQueryTemp do begin SQL.Add(sqltxt); If SQL.Count Mod 100 = 0 then begin ExecSQL(true); SQL.Clear; end; end; ... // Ende der Schleife // Hier nicht vergessen den Rest wegzuschreiben, wenn die Satzzahl nicht durch 100 zu teilen ist. If DM_User.SQLQueryTemp.SQL.Count > 0 then DM_User.SQLQueryTemp.SQL.ExecSQL(true); Wie sieht der Indexaufbau der Tabelle aus, auch hier kann bei satzweisem Einfügen ein Laufzeitproblem auftreten, wenn die Pflege des Index zu kompiliziert wird. Eventuell auch den Index vor dem Import wegwerfen und nach dem Import neuerstellen, dies geht allerdings nur, wenn der Index nicht zur Doppeltenprüfung... benötigt wird. |
Re: Firebird Import aus Textdatei extrem langsam
langsam, aber sicher, glaube ich, nicht mehr programmieren zu können!
beim Versuch, mit Params zu arbeiten, bekomme ich jetzt bei jeder Zeile folgenden Fehler: Datenbank-Server-Fehler: Column unknown ARTNR At line 1, column 38 das SQL-Statement habe ich auf das Minimum gekürzt:
SQL-Code:
Sehr seltsam, da er die ARTNR in der Feldliste offenbar sehr wohl kennt, erst in der Werteliste passt es ihm nicht mehr!!!
INSERT INTO ARTIKEL (ARTNR) VALUES (:ARTNR)
|
Re: Firebird Import aus Textdatei extrem langsam
Hallo,
zeig' uns bitte mal den Quelltext, mit dem Du die Parameter füllst, da scheint irgendetwas schief zu laufen. Mir sieht das so aus, als würden der Parameter nicht gefüllt werden. |
Re: Firebird Import aus Textdatei extrem langsam
Delphi-Quellcode:
nicht wundern über den veränderten Namen, ich habe fürs Testen einen neuen SQLQuery angelegt.
DM_User.SQLQueryImport.Params[paramnr].Value:=feldtxt;
Der Parameter ist definiert mit
Delphi-Quellcode:
DataType = ftString
Name = 'artnr' ParamType = ptInput Size = 17 Value = '' |
Re: Firebird Import aus Textdatei extrem langsam
Hallo,
was Du gemachts hast, sieht eigentlich nicht wirklich falsch aus, daher hier mal ein paar Vorschläge zur Lösung des Rätsels: Sind Datenbank und/oder Komponenten bei den Tabellen-, Feld- und/oder Parameternamen casesensitive? Schreib' mal in den Statements alle Tabellen- und Spaltennamen genau so, wie die Datenbank. Ebenso die Parameternamen im Statement so, wie Du sie im Programm definiert hast. Was steht in paramnr? Bist Du sicher, das Du da den richtigen Parameter erwischst? Kannst Du das im Programm auch mit ParamByName oder ähnlichem umsetzen? |
Re: Firebird Import aus Textdatei extrem langsam
Zitat:
Delphi-Quellcode:
var TD:TTransactionDesc; (aus DBXpress)
begin SQLConnection.StartTransaction(TD); try SQLConnection.ExecuteDirect('INSERT INTO ...'); SQLConnection.Commit(TD); except SQLConnection.Rollback(TD); end; end; |
Re: Firebird Import aus Textdatei extrem langsam
da bin ich mir sogar sehr sicher, weil ich nämlich nach dem Zurechtstutzen auf das Wesentliche versehentlich noch einen anderen Parameter füllen wollte, der in der Abfrage gar nicht mehr vorkommt - das führt sofort zu einem Systemfehler!
Andererseits führt auch die konsequente Verwendung der Kleinschreibung beim Parameter immer zur selben Fehlermeldung mit groß geschriebener ARTNR. ParamByName etc. habe ich auch ausprobiert - keine Veränderung bin langsam mit meinem Latein am Ende ... :( |
Re: Firebird Import aus Textdatei extrem langsam
Zitat:
"Ungültige Transaktions-ID" Wie kann man die ID zuordnen? Ich hätte eigentlich gedacht, dass das die DB für mich übernimmt, oder? |
Re: Firebird Import aus Textdatei extrem langsam
Oh, den Fehler hatte ich noch nie. TD ist aber nur ein einfaches Record. Einfach mal TD. eingeben...
|
Re: Firebird Import aus Textdatei extrem langsam
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:23 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