Hallo,
meine Frage ist, wie es im Betreff bereits steht, was der schnellste Weg ist, um ein DataTable in eine Datenbank zu speichern.
Folgendes Szenario:
Ich habe eine CSV Datei (Datum und Werte) in ein DataTable dt geschrieben. Jetzt möchte ich das DataTable in eine Access-datenbank speichern (*.mdb). In der Datenbank habe ich eine leere Tabelle Namens "daten".
Ich habe 2 methoden, um das DataTable in die Tabelle "daten" zu schrieben:
1)
OleDbDataAdapter adapter = new OleDbDataAdapter();
adapter.SelectCommand = new OleDbCommand("SELECT DatumUhrzeit, Wert FROM daten;", myConnection);
OleDbCommandBuilder cb = new OleDbCommandBuilder(adapter);
adapter.Update(dt);
Das dauert ca 53 Sekunden für 154000 Datensätze
2)
foreach(DataRow dr in dt.Rows)
{
sqlCommand = "insert into daten1 (DatumUhrzeit,Wert) values('"+dr[0]+"','" + dr[1] + "')";
c.CommandText = sqlCommand;
c.Connection = myConnection;
c.ExecuteNonQuery();
}
Hier komme ich auf 42 Sekunden.
Ich habe das gleiche mal vor 2 jahren mit ADO 2.6.8 (also nicht ADO.net gemacht) und VB.Net gemacht. Da brauchte ich 14 Sekunden.
Gibt es unter c# also schnellere Möglichkeiten?
Vielen Dank
meine Frage ist, wie es im Betreff bereits steht, was der schnellste Weg ist, um ein DataTable in eine Datenbank zu speichern.
Folgendes Szenario:
Ich habe eine CSV Datei (Datum und Werte) in ein DataTable dt geschrieben. Jetzt möchte ich das DataTable in eine Access-datenbank speichern (*.mdb). In der Datenbank habe ich eine leere Tabelle Namens "daten".
Ich habe 2 methoden, um das DataTable in die Tabelle "daten" zu schrieben:
1)
OleDbDataAdapter adapter = new OleDbDataAdapter();
adapter.SelectCommand = new OleDbCommand("SELECT DatumUhrzeit, Wert FROM daten;", myConnection);
OleDbCommandBuilder cb = new OleDbCommandBuilder(adapter);
adapter.Update(dt);
Das dauert ca 53 Sekunden für 154000 Datensätze
2)
foreach(DataRow dr in dt.Rows)
{
sqlCommand = "insert into daten1 (DatumUhrzeit,Wert) values('"+dr[0]+"','" + dr[1] + "')";
c.CommandText = sqlCommand;
c.Connection = myConnection;
c.ExecuteNonQuery();
}
Hier komme ich auf 42 Sekunden.
Ich habe das gleiche mal vor 2 jahren mit ADO 2.6.8 (also nicht ADO.net gemacht) und VB.Net gemacht. Da brauchte ich 14 Sekunden.
Gibt es unter c# also schnellere Möglichkeiten?
Vielen Dank
Comment