Viele Zeilen auf einmal in eine Tabelle einer DB importieren



  • Hallo,

    ich habe ein Programm geschrieben mit dem ich Daten aus einer Txt-Quelldatei mithilfe von Stored Procedures in eine Tabelle einer Datenbank importiere. Ich importiere immer zeilenweise. Das ist allerdings viel zu langsam, deswegen frage ich ob es eine Moeglichkeit gibt, mehere (vielleicht 1.000) Zeilen auf einmal zu importieren.

    Es kommt mir bei dem Importieren auf die Schnelligkeit an.

    Vielen Dank schon mal im Voraus.

    Edit: Ich verwende C#.



  • Bulkcopy wäre eine Möglichkeit.
    Oder eben Den Query an den Server senden und danach nurmehr die Parameter.
    Dadurch wird der Query nur einmal Analysiert und der SQL fügt dann nurmehr die Daten ein.



  • Danke. Bulkcopy gefaellt mir gut.



  • Mit dem MSSQL geht's so auch verdammt schnell:

    CREATE TABLE #foo (a int, b int, c int);
    
    DECLARE @tmp TABLE (a int, b int, c int);
    
    INSERT @tmp (a, b, c) VALUES (1,2,3);
    INSERT @tmp (a, b, c) VALUES (2,2,3);
    INSERT @tmp (a, b, c) VALUES (3,2,3);
    INSERT @tmp (a, b, c) VALUES (4,2,3);
    -- ...
    
    INSERT #foo (a, b, c) SELECT a, b, c FROM @tmp;
    
    SELECT * FROM #foo;
    
    DROP TABLE #foo;
    

    Mit System.Data.SqlClient.SqlBulkCopy ist es natürlich wesentlich eleganter.


Anmelden zum Antworten