是否可以一次将整个VB.NET DataTable插入SQL Server

Sql*_*yan 10 sql t-sql vb.net sql-server datatable

我在VB.NET中有一个SQLClient.DataSet,我想将整个内容插入到SQL Server表中,而不必执行以下操作:

For Each dr as Datarow in MyDataset
  Dim sc As New SqlCommand("INSERT INTO MyNewTable " & _
                            "VALUES (@column1, @column2)", MyDBConnection)
  sc.Parameters.AddWithValue("@column1", dr.Item(0))
  sc.Parameters.AddWithValue("@column2", dr.Item(1))
  sc.ExecuteNonQuery()
Next
Run Code Online (Sandbox Code Playgroud)

由于我已经接近一百万行(所有这些都非常瘦,所以空间不大),我显然不想运行这个循环并生成一百万个INSERT语句.

我知道一个选项是在我最初获取数据时使用链接服务器,因为它来自另一个SQL Server,并且只是从那里进入INSERT.但是,如果我已经在我的应用程序中有数据,是否有更有效的方法来批量插入它?我可以以某种方式将DataTable作为参数传递给SQL Server并让它排序并插入行吗?

ani*_*key 16

尝试使用SqlBulkCopy


Rem*_*anu 7

使用SQL Server 2008,您可以使用表值参数:

Dim sc As New SqlCommand(
  "INSERT INTO MyNewTable (field1, field2,...)"&
    "SELECT field1, field2,... FROM @MyTable;", MyDBConnection) 
sc.Parameters.AddWithValue("@MyTable", MyDataset)  
sc.ExecuteNonQuery()
Run Code Online (Sandbox Code Playgroud)