Datenbank: MS SQL-Server • Version: ab 2012 • Zugriff über: ADO/OLE DB
SQL-Server BulkCopy bzw. IRowsetFastLoad aus TDataSet - extrem schnell
Mit der Funktion kann ich 1 Mio. Datensätze in weniger als 2 Sekunden!!! aus einem beliebigen DataSet (bei mir einfach ein TClientDataSet) in eine gleich strukturierte SQL-Server-Tabelle kopieren. Meine Beispieltabellen hatten allerdings auch nur 3 Spalten - aber immerhin.
Den Quellcode dazu habe ich hier gefunden. Ganz unten auf der Seite gibts auch einen Link zu GitHub. Wenn man die .pas-Datei einbindet, kann man einfach die folgende Prozedur benutzen - und fertig. Das Quell-Dataset muss vorher nur auf dem 1. Datensatz stehen:
Delphi-Quellcode:
procedure BulkCopy(Dataset: TDataSet; Connection: TADOConnection; const DstTableName: string);
Falls jemand Interesse hat, habe ich auch eine Version gefunden, mit der die Insert-Trigger auf dem SQL-Server ausgelöst werden. Jetzt aber zu meinem Problem: Für den Kopiervorgang werden automatisch immer neue Verbindungen zum SQL-Server erstellt. Diese neuen Verbindungen haben für meinen Verwendungszweck jedoch zwei entscheidende Nachteile:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:58 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