gpt4 book ai didi

ado.net - 在 ADO.NET 中使用动态创建的临时表进行批量复制

转载 作者:行者123 更新时间:2023-12-04 19:10:02 28 4
gpt4 key购买 nike

我需要通过 ADO.NET 创建一个临时表,执行一个 BulkCopy然后是 Merge在临时表和实际表之间的服务器上。

问题是使用纯 ADO.NET 创建动态临时表。
架构应该与现有表相同,但该表是使用 ORM(NHibernate 或 Entity Framework ,我们还不确定)创建的。这也意味着架构在 future 可能会发生变化。

有没有办法使用普通的 ADO.NET 对象在数据库中创建表?如DataTable包含原始表的架构?

任何指向我正确方向的信息都值得赞赏。

最佳答案

您可以使用 select into #somename 创建一个临时表。

connection_ = New SqlClient.SqlConnection(connection_string_)
connection_.Open()
If connection_.State = ConnectionState.Open Then

command_.Connection = connection_
command_.CommandType = CommandType.Text
command_.CommandText = "select * into #some_table from some_table where some_id = 0"
command_.ExecuteNonQuery()

Dim line_index_ As Integer = 0
Dim data_table_ As DataTable = New DataTable()
Using parser_ As FileIO.TextFieldParser = New FileIO.TextFieldParser(path_)
parser_.SetDelimiters(delimiter_)
parser_.HasFieldsEnclosedInQuotes = False
While Not parser_.EndOfData
If line_index_ = 0 Then
Dim headers_ As String() = parser_.ReadFields()
For Each header_ In headers_
data_table_.Columns.Add(header_)
Next
Else
Dim row_ As DataRow = data_table_.NewRow()
row_.ItemArray = parser_.ReadFields()
data_table_.Rows.Add(row_)
End If
line_index_ += 1
End While
End Using

Using bulkCopy_ As SqlBulkCopy = New SqlBulkCopy(connection_)
bulkCopy_.DestinationTableName = "#some_table"
bulkCopy_.WriteToServer(data_table_)
End Using

' proof
command_.CommandText = "select * from #some_table"
Dim reader_ As SqlDataReader = Nothing
reader_ = command_.ExecuteReader
line_index_ = 0
While reader_.Read
line_index_ += 0
End While

End If

关于ado.net - 在 ADO.NET 中使用动态创建的临时表进行批量复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15922351/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com