AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Firebird Import aus Textdatei extrem langsam
Thema durchsuchen
Ansicht
Themen-Optionen

Firebird Import aus Textdatei extrem langsam

Ein Thema von globetrotter77 · begonnen am 13. Sep 2009 · letzter Beitrag vom 18. Sep 2009
Antwort Antwort
Seite 3 von 7     123 45     Letzte »    
nahpets
(Gast)

n/a Beiträge
 
#21

Re: Firebird Import aus Textdatei extrem langsam

  Alt 14. Sep 2009, 10:45
Hallo,

hast Du schonmal probiert, was passiert, wenn Du mehrere Insert gleichzeitig absetzt?
Davon ausgehend, dass das in einer Schleife passiert:
Delphi-Quellcode:
with DM_User.SQLQueryTemp do
  begin
    with SQL do
      begin
        Clear;
        Add(sqltxt);
      end;
      ExecSQL(true);
    end;
einmal in der Art ändern:
Delphi-Quellcode:
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);
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.
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.
  Mit Zitat antworten Zitat
globetrotter77

Registriert seit: 16. Jan 2009
Ort: Nürnberg
236 Beiträge
 
Delphi 10.3 Rio
 
#22

Re: Firebird Import aus Textdatei extrem langsam

  Alt 14. Sep 2009, 11:45
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:
INSERT INTO ARTIKEL (ARTNR) VALUES (:ARTNR) Sehr seltsam, da er die ARTNR in der Feldliste offenbar sehr wohl kennt, erst in der Werteliste passt es ihm nicht mehr!!!
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#23

Re: Firebird Import aus Textdatei extrem langsam

  Alt 14. Sep 2009, 11:48
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.
  Mit Zitat antworten Zitat
globetrotter77

Registriert seit: 16. Jan 2009
Ort: Nürnberg
236 Beiträge
 
Delphi 10.3 Rio
 
#24

Re: Firebird Import aus Textdatei extrem langsam

  Alt 14. Sep 2009, 12:29
DM_User.SQLQueryImport.Params[paramnr].Value:=feldtxt; nicht wundern über den veränderten Namen, ich habe fürs Testen einen neuen SQLQuery angelegt.

Der Parameter ist definiert mit
Delphi-Quellcode:
        DataType = ftString
        Name = 'artnr'
        ParamType = ptInput
        Size = 17
        Value = ''
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#25

Re: Firebird Import aus Textdatei extrem langsam

  Alt 14. Sep 2009, 12:48
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?
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#26

Re: Firebird Import aus Textdatei extrem langsam

  Alt 14. Sep 2009, 12:57
Zitat von globetrotter77:
StartTransaction erwartet einen "benutzerdefinierten Transaktionsbezeichner" - was ist denn damit gemeint??
und wie macht man das?
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;
  Mit Zitat antworten Zitat
globetrotter77

Registriert seit: 16. Jan 2009
Ort: Nürnberg
236 Beiträge
 
Delphi 10.3 Rio
 
#27

Re: Firebird Import aus Textdatei extrem langsam

  Alt 14. Sep 2009, 13:01
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 ...
  Mit Zitat antworten Zitat
globetrotter77

Registriert seit: 16. Jan 2009
Ort: Nürnberg
236 Beiträge
 
Delphi 10.3 Rio
 
#28

Re: Firebird Import aus Textdatei extrem langsam

  Alt 14. Sep 2009, 13:13
Zitat von omata:
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;
das führt zu folgendem Fehler:
"Ungültige Transaktions-ID"
Wie kann man die ID zuordnen? Ich hätte eigentlich gedacht, dass das die DB für mich übernimmt, oder?
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#29

Re: Firebird Import aus Textdatei extrem langsam

  Alt 14. Sep 2009, 13:24
Oh, den Fehler hatte ich noch nie. TD ist aber nur ein einfaches Record. Einfach mal TD. eingeben...
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#30

Re: Firebird Import aus Textdatei extrem langsam

  Alt 14. Sep 2009, 17:57
Hallo,

schau mal hier

1



Heiko
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 7     123 45     Letzte »    


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 03:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz