AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Datenimport ohne Doppelte Daten mit SQL
Thema durchsuchen
Ansicht
Themen-Optionen

Datenimport ohne Doppelte Daten mit SQL

Ein Thema von dUSER.th · begonnen am 1. Okt 2013 · letzter Beitrag vom 27. Okt 2013
 
Morphie

Registriert seit: 27. Apr 2008
Ort: Rahden
630 Beiträge
 
#6

AW: Datenimport ohne Doppelte Daten mit SQL

  Alt 1. Okt 2013, 10:17
P1 bis P2.1 komm ich jetzt nicht so ganz mit.
Es soll nur der doppelte Satz mit einem Zeichen markiert werden. Lieber währe es mir ich kann den Satz gleich Löschen. Aber das ist ja warum auch immer noch langsamer.

Könntest Du mir mit P1 mal einen kleinen weiteren Tip geben?
P1:
Ich weiß nicht genau wie ZEOS das intern macht, aber ich vermute, wenn du keine Transaktion explizit angibst / erzeugst, erzeugt ZEOS eine Transaktion automatisch.
In deinem Beispiel würde ZEOS automatisch für jeden Datensatz eine eigene Transaktion erzeugen. Das ist natürlich nicht sinnvoll...
Du müsstest dir also zu Beginn der Methode eine Transaktion erzeugen, dem Query zuordnen und am ende (oder zwischendurch) ein Commit (Speichern) der Transaktion durchführen.

P2.1:
Du setzt in jedem Schleifendurchlauf (Datensatz) den Commandtext für DBF3 neu. Den solltest du aber nur einmalig vor der Schleife setzen:
Code:
UPDATE TB_IMPORT SET GEBUCHT = 1 WHERE TB_IMPORT.BEWNR = :PAR_BEWNR;
anschließend ein DBF3.Prepare; um den Befehl zur Datenbank zu schicken.
In dem Moment weiß die Datenbank genau, was sie machen soll. Ihr fehlen aber noch die entsprechenden Datensätze / Werte.
Also füllst du jetzt innerhalb der Schleife den Parameter "AR_BEWNR" mit deiner Variable vBEWNR und führst ein Execute durch.

Wenn du das so machst, hast du gleich mehrere Vorteile:
1. du verringerst den Traffic zum Datenbankserver.
2. der Server weiß bereits, was er zutun hat, muss den Befehl also nicht jedes Mal neu parsen.
3. du kannst dir so keine SQL-Injections einfangen...
  Mit Zitat antworten Zitat
 

 

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 16:25 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