0

我已经成功地使用 将Oracle.ManagedDataAccess.Client数据从 Oracle 服务器提取到 aDataset中,并用于SqlBulkCopy将其插入Dataset到 SQL 数据库中,其中表具有匹配的列名(见下文)。

我将如何操作InsertDataset以便我可以指定 中的列Dataset将进入 SQL 表的位置,从而允许我使用不同的表?

例如SourceTable(column1)插入到DestinationTable(column4)

我在想这可能可以通过如下 SQL 插入语句来实现:

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()
4

1 回答 1

0

看起来我可以使用 的ColumnMappings功能BulkCopy来解决我的问题。由@AnandPhadke 从帖子中找到: 将数据从数据集中插入表中

他们链接了这个:https ://www.codeproject.com/Articles/18418/Transferring-Data-Using-SqlBulkCopy

这允许我指定源列的名称及其目标。

例如bulkCopy.ColumnMappings.Add("column1", "columnn4")

于 2017-06-19T09:34:13.483 回答