hunter
24-09-2003, 12:50
Ich arbeite zur Zeit an einem VB.NET Programm, das Daten auslesen, soritieren und in Tabellen schreiben soll. Mein eigentliches Problem ist aber SQL, weshalb ich es hier mal poste.
Ich habe Daten aus einer Datenbank ausgelesen und sortiert. Diese Daten liegen nun in einer DataTable, was letztendlich ein mehrdimensionales Array ist. Darin liegen die Daten nun korrekt in den richtigen Zeilen und Spalten vor.
Diese Daten müssen nun in eine Excel Tabelle pbertragen werden, wofür ich aber über eine Schnittstelle gehe und die Tabelle wie eine Datenbank behandel. Das übergeben der Daten erfolgt dann zeilenweise per SQL Anweisungen.
For i = 0 To (tabelle.Rows.Count - 1)
'Abweichungen berechnen
[...]
'Korrekturschleife, damit an leeren Stellen
'das Schlüsselwort 'NULL' eingesetzt wird
[...]
'Tag und Monat bestimmen
[...]
'SQL Kommando zum zeilenweisen einfügen von Daten
cmd.CommandText = "INSERT INTO Daten2 (Zeit, Sensor1A, Sensor2A, Sensor1B, Sensor2B," + _
" Tag, Monat, Abweichung1, Abweichung2) values" + _
"('" + _
(tabelle.Rows(i).Item(0)).ToString + _
"', " + _
(tabelle.Rows(i).Item(1)).ToString + _
", " + _
(tabelle.Rows(i).Item(2)).ToString + _
", " + _
(tabelle.Rows(i).Item(3)).ToString + _
", " + _
(tabelle.Rows(i).Item(4)).ToString + _
", " + _
tag + _
", " + _
monat + _
", " + _
(tabelle.Rows(i).Item(5)).ToString + _
", " + _
(tabelle.Rows(i).Item(6)).ToString + _
")"
cmd.ExecuteNonQuery()
Next
Wie man sieht lasse ich den Index von 0 bis Anzahl Zeilen - 1 laufen und übertrage alle Daten per SQL. Das ganze dauert etwas über 2 Sekunden, was schon 2/3 der Gesamtlaufzeit das Programms ausmacht.
Daher meine Frage: Gibts irgendeine Möglichkeit das zu beschleunigen, indem man es vieleicht etwas anders angeht ?
Ich habe Daten aus einer Datenbank ausgelesen und sortiert. Diese Daten liegen nun in einer DataTable, was letztendlich ein mehrdimensionales Array ist. Darin liegen die Daten nun korrekt in den richtigen Zeilen und Spalten vor.
Diese Daten müssen nun in eine Excel Tabelle pbertragen werden, wofür ich aber über eine Schnittstelle gehe und die Tabelle wie eine Datenbank behandel. Das übergeben der Daten erfolgt dann zeilenweise per SQL Anweisungen.
For i = 0 To (tabelle.Rows.Count - 1)
'Abweichungen berechnen
[...]
'Korrekturschleife, damit an leeren Stellen
'das Schlüsselwort 'NULL' eingesetzt wird
[...]
'Tag und Monat bestimmen
[...]
'SQL Kommando zum zeilenweisen einfügen von Daten
cmd.CommandText = "INSERT INTO Daten2 (Zeit, Sensor1A, Sensor2A, Sensor1B, Sensor2B," + _
" Tag, Monat, Abweichung1, Abweichung2) values" + _
"('" + _
(tabelle.Rows(i).Item(0)).ToString + _
"', " + _
(tabelle.Rows(i).Item(1)).ToString + _
", " + _
(tabelle.Rows(i).Item(2)).ToString + _
", " + _
(tabelle.Rows(i).Item(3)).ToString + _
", " + _
(tabelle.Rows(i).Item(4)).ToString + _
", " + _
tag + _
", " + _
monat + _
", " + _
(tabelle.Rows(i).Item(5)).ToString + _
", " + _
(tabelle.Rows(i).Item(6)).ToString + _
")"
cmd.ExecuteNonQuery()
Next
Wie man sieht lasse ich den Index von 0 bis Anzahl Zeilen - 1 laufen und übertrage alle Daten per SQL. Das ganze dauert etwas über 2 Sekunden, was schon 2/3 der Gesamtlaufzeit das Programms ausmacht.
Daher meine Frage: Gibts irgendeine Möglichkeit das zu beschleunigen, indem man es vieleicht etwas anders angeht ?