Announcement

Collapse
No announcement yet.

Schnellster Weg um DataTable in AccessDB zu speichern

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Schnellster Weg um DataTable in AccessDB zu speichern

    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

  • #2
    Gibt es unter c# also schnellere Möglichkeiten?
    Zumindest die gleichen wie bei VB.Net.

    Bei deiner Datenmenge würde ich aber eher die BulkInsert Möglichkeiten der betroffenen Datenbank benutzen(vermutlich hat da Access auch irgendwas eingebaut). Ein Einzelupdate jeder Datenzeile kann nie wirklich schnell sein.

    Comment

    Working...
    X