从C#DataTable批量插入的最佳方法

Jod*_*aki 23 c# .net-2.0

我有一个DataTable我想要推送到DB.我希望能够说出来

myDataTable.update();
Run Code Online (Sandbox Code Playgroud)

但在阅读MSDN 文档后,显然这确实是逐行插入的.

应该注意的是,这些陈述不是作为批处理执行的; 每行都单独更新.

我有什么选择?

编辑:我正在使用SQL Server 2005

Joh*_*hnB 48

如果使用SQL Server, SqlBulkCopy.WriteToServer(DataTable)

或者也可以使用SQL Server,将其写入.csv并使用 BULK INSERT

如果使用MySQL,您可以将其写入.csv并使用 LOAD DATA INFILE

如果使用Oracle,则可以使用ODP.NET的数组绑定功能

如果是SQLite:


小智 8

string connectionString= ServerName + DatabaseName + SecurityType;
using (SqlConnection connection = new SqlConnection(connectionString))
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection)) {
    connection.Open();
    bulkCopy.DestinationTableName = "TableName";
    try {
        bulkCopy.WriteToServer(dataTableName);
    } catch (Exception e) {
        Console.Write(e.Message);
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,数据库表的结构和表名应该相同,否则会引发异常.

  • +1 例如:)。与其说“结构应该相同”,不如在示例中包含 SqlBulkCopy.ColumnMappings (2认同)