如何将OracleAdapter数据集转换为SQL BulkCopy
问题描述:
我已成功使用Oracle.ManagedDataAccess.Client
将数据从Oracle服务器提取到Dataset
,并使用SqlBulkCopy
将Dataset
插入SQL数据库,其中表具有匹配的列名称(请参见下文) 。如何将OracleAdapter数据集转换为SQL BulkCopy
我怎么会去操纵Dataset
的Insert
这样我就可以指定在Dataset
列将进入SQL表,让我用非相同的表?
E.g. SourceTable(column1)
插入到DestinationTable(column4)
我想这可能是能够与SQL INSERT语句等来实现:
INSERT INTO DestinationTable ([column4]) Values ([column1])
但我不知道如何操作Dataset
到我的SQL语句。我的代码到目前为止:
Dim i As Double = 1
Dim j As Double = 5000
Dim Oconn As New OracleConnection(connectionString & mySource)
Oconn.Open()
Dim Osqlstr As String = "Select column1, " _
& "column2, " _
& "column3, " _
& "column4, " _
& "from " _
& "(Select rownum r, " _
& "column1, " _
& "column2, " _
& "column3, " _
& "column4, " _
& "from mysourcetable)" _
& "where rownum >=" & i & " and rownum <=" & j _
& " order by column1 asc"
Dim Ocommand As New OracleCommand(Osqlstr, Oconn)
Dim Oda As New OracleDataAdapter(Ocommand)
Dim Ods As New DataSet()
Oda.Fill(Ods)
Using myBulk As New SqlBulkCopy(DB_COMMS)
myBulk.DestinationTableName = "mydestinationtable"
Try
myBulk.WriteToServer(Ods.Tables(0))
Catch ex As Exception
MsgBox("Error:- " & ex.Message)
End Try
End Using
Ods.Dispose()
Oconn.Close()
答
它看起来像我可以使用的BulkCopy
的ColumnMappings
功能来解决我的问题。通过@AnandPhadke从后发现: insert data into table from a dataset
他们此链接:https://www.codeproject.com/Articles/18418/Transferring-Data-Using-SqlBulkCopy
这让我指定源列和目的地的名称。
E.g. bulkCopy.ColumnMappings.Add("column1", "columnn4")