如何将OracleAdapter数据集转换为SQL BulkCopy

问题描述:

我已成功使用Oracle.ManagedDataAccess.Client将数据从Oracle服务器提取到Dataset,并使用SqlBulkCopyDataset插入SQL数据库,其中表具有匹配的列名称(请参见下文) 。如何将OracleAdapter数据集转换为SQL BulkCopy

我怎么会去操纵DatasetInsert这样我就可以指定在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() 

它看起来像我可以使用的BulkCopyColumnMappings功能来解决我的问题。通过@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")