Rubrik: Datenbanken · ADO.NET Allgemein | VB-Versionen: VB.NET | 19.12.07 |
Datenbank-Inhalt schnell kopieren (VB 2005) Mit der ADO.NET 2.0 SQLBulkCopy-Klasse lassen sich große Datenmengen schnell von einer Tabelle in eine andere Tabelle kopieren. | ||
Autor: Dieter Otter | Bewertung: | Views: 19.135 |
www.tools4vb.de | System: WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | kein Beispielprojekt |
Sollen große Datenmengen aus einer Datenbank-Tabelle in eine zweite Datenbank-Tabelle kopiert werden (bspw. auch als Backup-Variante) können Sie hierfür die neue SQLBulkCopy-Klasse in ADO.NET 2.0 verwenden. Die Handhabung ist hierbei wirklich sehr einfach:
- Verbindung zur Quell- und Ziel-Datenbank herstellen
- via DataReader die gewünschten Daten aus der Quell-Tabelle lesen
- via SQLBulkCopy alle selektierten Daten in die Ziel-Tabelle speichern
- Trennen der Datenbank-Verbindungen
' Connection-String für Quelle Dim sConnSrc As String = "Persist Security Info=True;" & _ "User ID=sa;" & _ "Password=xxxx;" & _ "Initial Catalog=TESTDB;" & _ "Data Source=LOCALHOST;" ' Connection-String für Ziel Dim sConnDest As String = "Persist Security Info=True;" & _ "User ID=sa;" & _ "Password=xxxx;" & _ "Initial Catalog=TESTNEW;" & _ "Data Source=LOCALHOST;" ' SQL-Connection-Objekte erstellen Dim oConnSource As New SqlConnection(sConnSrc) Dim oConnDest As New SqlConnection(sConnDest) ' Verbindungen zur Quell- und Ziel-Datenbank öffnen oConnSource.Open() oConnDest.Open() ' SQL-Befehl zum Selektieren aller Daten aus der Quell-Tabelle Dim oCommand As New SqlCommand("SELECT * FROM dbo.Table_1", oConnSource) ' alle Daten in ein DataReader-Objekt einlesen Dim oReader As SqlDataReader = oCommand.ExecuteReader ' SQLBulkCopy-Objekt erstellen Dim oBulkCopy As New SqlBulkCopy(oConnDest) With oBulkCopy ' Ziel-Tabelle festlegen, in die die Daten gespeichert werden sollen .DestinationTableName = "dbo.Table_1" ' jetzt alle Daten aus dem DataReader in die Ziel-Tabelle schreiben .WriteToServer(oReader) End With ' Verbindungen schließen oConnSource.Close() oConnDest.Close()