【问题标题】:How Transform OracleAdapter Dataset to SQL BulkCopy如何将 OracleAdapter 数据集转换为 SQL BulkCopy
【发布时间】:2017-06-19 08:34:12
【问题描述】:

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

我将如何处理DatasetInsert,以便我可以指定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()

【问题讨论】:

    标签: vb.net oracle dataset sqlbulkcopy oracle-manageddataaccess


    【解决方案1】:

    看来我可以使用BulkCopyColumnMappings 功能来解决我的问题。由@AnandPhadke 从帖子中找到: insert data into table from a dataset

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-17
      • 1970-01-01
      • 1970-01-01
      • 2016-11-01
      • 2021-05-23
      • 1970-01-01
      相关资源
      最近更新 更多