ADO.NET: 如何将一个DataTable中的行批量复制到另一个表中?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ADO.NET: 如何将一个DataTable中的行批量复制到另一个表中?相关的知识,希望对你有一定的参考价值。
一个遗留的应用程序正在复制100K记录在一个 DataTable
变成另一个这样。
For index = 0 To dataTable.Rows.Count() - 1
Dim column1 = CType(dataTable.Rows(index).Item("column1"), Integer)
Dim column2 = CType(dataTable.Rows(index).Item("column2"), Integer)
Dim column3 = CType(dataTable.Rows(index).Item("column3"), Integer)
Dim dataRow = ds.Tables("MyTable").NewRow
dataRow("column1") = column1
dataRow("column2") = column2
dataRow("column3") = column3
ds.Tables("MyTable").Rows.Add(dataRow)
Next
这似乎很慢,因为我们需要迭代100K次并添加一条新的记录。有没有什么.NET API可以批量复制行来减少复制所有内容的时间?源代码 DataTable
有更多的列,而目标表是一个子集。我们可以重构代码,只使用源表,但这是一个复杂的应用程序,它需要回归测试,因为源表和目的表都是全局变量,并且在很多地方使用。
答案
怎么样?"dataTable.Copy()"
https:/docs.microsoft.comen-gbdotnetapisystem.data.datatable.copy?view=netframework-4.8。
// Create an object variable for the copy.
DataTable copyDataTable;
copyDataTable = table.Copy();
另一答案
我不知道有多少,但我希望这能更快。
Dim newTable = oldTable.DefaultView.ToTable(False,
{"column1",
"column2",
"column3"})
以上是关于ADO.NET: 如何将一个DataTable中的行批量复制到另一个表中?的主要内容,如果未能解决你的问题,请参考以下文章
ADO.NET_DataSet类,DataAdapter类,DataTable类