我有一个要推送到DB的DataTable
。我希望能够说这样的话
myDataTable.update();
但在读取MSDN docs之后,显然这是逐行插入的。
应该注意,这些语句不是作为批处理过程执行的;每一行都是单独更新的。
我的替代方案是什么?
编辑:我正在使用SQL Server 2005
发布于 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:
发布于 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);
}
}
请注意,数据库表的结构和表名应该相同,否则会抛出异常。
发布于 2011-02-17 05:49:00
这将在很大程度上取决于您正在使用的RDBMS,以及该RDBMS是否存在.NET选项。
如果您使用的是SQL Server,请使用SqlBulkCopy类。
对于其他数据库供应商,请尝试专门搜索它们。例如,搜索“Oracle into Oracle”会得到一些有趣的结果,包括指向Stack Overflow:Bulk Insert to Oracle using .NET的链接。
https://stackoverflow.com/questions/5022531
复制相似问题