Come trasformare OracleAdapter Dataset in SQL BulkCopy

dataset oracle oracle-manageddataaccess sqlbulkcopy vb.net

Domanda

Ho usato con successo Oracle.ManagedDataAccess.Client per recuperare i dati da un server Oracle in un Dataset , e utilizzato SqlBulkCopy da inserire che Dataset in un database SQL in cui le tabelle hanno nomi colonne corrispondenti (vedi sotto).

Come faccio a manipolare l' Insert del Dataset modo da poter specificare dove le colonne nel Dataset andrebbero nella tabella SQL, permettendomi di usare tabelle non identiche?

Eg SourceTable(column1) Inserts to DestinationTable(column4)

Stavo pensando che questo possa essere realizzato con una dichiarazione SQL Insert come:

INSERT INTO DestinationTable ([column4]) Values ([column1])

Ma non so come manipolare il Dataset nella mia istruzione SQL. Il mio codice finora :

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

Risposta accettata

Sembra che posso usare il ColumnMappings funzionalità di BulkCopy per risolvere il mio problema. Trovato da @AnandPhadke dal post: inserire i dati nella tabella da un set di dati

Hanno collegato questo: https://www.codeproject.com/Articles/18418/Transferring-Data-Using-SqlBulkCopy

Questo mi consente di specificare il nome della colonna di origine e la sua destinazione.

Ad es. bulkCopy.ColumnMappings.Add("column1", "columnn4")



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché