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中的行批量复制到另一个表中?的主要内容,如果未能解决你的问题,请参考以下文章

深入详解DataTable

ADO.NET_DataSet类,DataAdapter类,DataTable类

在ADO.NET 中,为访问DataTable 对象从数据源提取的数据行。可使用DataTable 对象的啥属性。

ADO .NET 中常用的对象有那些?分别描述下?

VB.NET 从 DataTable 对象将表附加到数据库

ADO.NET 包含哪些内容