![]() |
Datenbank: Firebird • Version: 2.5 • Zugriff über: IBDAC
Datensätze schnell einfügen bzw. ersetzen
Moin,
ich habe größere Datenmengen, die ich gerne schneller als bisher in eine Tabelle einfügen möchte. Shmia hat so etwas ![]() Bei mir kann es aber sein, dass die Daten schon vorhanden sind: vorhandene müssen überschrieben, neue angehängt werden. Kann man das als Einstellung mitgeben (z.B. "Insert or Replace")? Grüße, Messie |
AW: Datensätze schnell einfügen bzw. ersetzen
|
AW: Datensätze schnell einfügen bzw. ersetzen
Suchst du sowas?
![]() @deddyH :mrgreen: (kein roter Kasten) |
AW: Datensätze schnell einfügen bzw. ersetzen
Oder wenn man etwas flexibler reagiren will
![]() |
AW: Datensätze schnell einfügen bzw. ersetzen
Sind die Daten denn überhaupt schon in der Datenbank? Wenn Du auf shmia's Beitrag verweist, sieht das noch nicht so aus.
Tipp: Firebird kann sehr gut mit externen Tabellen im Textformat umgehen, eigentlich genauso wie mit einer Tabelle in der DB. Das, kombiniert mit den beiden Tipps, sollte deine Aufgabe optimal lösen. |
AW: Datensätze schnell einfügen bzw. ersetzen
Zitat:
das ist genau der Punkt: sie sind teilweise schon da. Daher die Fragestellung. Ich meinte den Ansatz:
Code:
Der würde bei den vorhandenen Daten evtl. doppelte Datensätze erzeugen. Und da ist die Frage, ob man der Query ein Merge-Verhalten mit auf den Weg geben kann.
Query1.SQL.Text := 'SELECT * FROM '+tablename+' WHERE 0=1';
Query1.Open; // liefert ein leere Datenmenge Query1.Append; // Einfügemodus Query1['feld1'] := ... Query1['feld2'] := ... Query1.Post; // Daten abschicken Das mit den Tabellen ist interessant. Wie bekomme ich die externe Tabelle in die DB (Beispiele, Tutorials?) Grüße, Messie |
AW: Datensätze schnell einfügen bzw. ersetzen
Jein, man könnte aber die UpdateSQL-Eigenschaft oder die des Updateobjekts mit einem 'UPDATE OR INSERT INTO'-Statement belegen.
Zitat:
![]() |
AW: Datensätze schnell einfügen bzw. ersetzen
Und wir meinten den Ansatz
Delphi-Quellcode:
Etwas mehr Geschwindigkeit gibt es, wenn man sich die Parameter-Referenzen merkt, anstatt immer wieder durch
Query1.SQL.Text := 'UPDATE OR INSERT INTO table1 (Field1,Field2) VALUES (:Field1,:Field2)';
// das hier in einer Schleife ausführen Query1.ParamByName('Field1').Value := ... Query1.ParamByName('Field2').Value := ... ... Query1.ExecSQL;
Delphi-Quellcode:
zu holen.
ParamByName
|
AW: Datensätze schnell einfügen bzw. ersetzen
Zitat:
Grüße, Messie |
AW: Datensätze schnell einfügen bzw. ersetzen
Den
![]() Zeig doch mal deine Tabellenstruktur ... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:42 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