首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从C# DataTable进行大容量插入的最佳方法

从C# DataTable进行大容量插入的最佳方法
EN

Stack Overflow用户
提问于 2011-02-17 05:47:10
回答 5查看 128.8K关注 0票数 29

我有一个要推送到DB的DataTable。我希望能够说这样的话

myDataTable.update();

但在读取MSDN docs之后,显然这是逐行插入的。

应该注意,这些语句不是作为批处理过程执行的;每一行都是单独更新的。

我的替代方案是什么?

编辑:我正在使用SQL Server 2005

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-02-17 06:06:57

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

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

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

如果使用Oracle,则使用you can use the array binding feature of ODP.NET

如果为SQLite:

票数 58
EN

Stack Overflow用户

发布于 2015-08-14 18:31:24

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);
    }
}

请注意,数据库表的结构和表名应该相同,否则会抛出异常。

票数 10
EN

Stack Overflow用户

发布于 2011-02-17 05:49:00

这将在很大程度上取决于您正在使用的RDBMS,以及该RDBMS是否存在.NET选项。

如果您使用的是SQL Server,请使用SqlBulkCopy类。

对于其他数据库供应商,请尝试专门搜索它们。例如,搜索“Oracle into Oracle”会得到一些有趣的结果,包括指向Stack Overflow:Bulk Insert to Oracle using .NET的链接。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5022531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档