0

我正在将 csv 文件读取到 vb.net 中的数据表中,并进行一些检查并附加一个额外的列。然后,我想使用 microsofts Oracle.DataAccess(在此没有选择)对 Oracle 数据库执行批量插入。

执行此操作的最佳方法是什么,因为 SQLserver 中没有 bulkImport。

谢谢

4

3 回答 3

0

我一直在寻找类似的路线,但遇到了死胡同。我从 Microsoft Corp 的 ADO .NET 团队项目经理 Pablo Castro 的声明中了解到,SqlBulkCopy 包含在 ADO.NET 2.0 中,位于 SQL Server 的 .NET 提供程序 (SqlClient) 中。他们的 OracleClient 提供程序不支持批量复制。

于 2010-05-13T09:35:48.027 回答
0

为什么要批量插入而不是常规插入?

如果要避免生成重做日志条目,最好的办法是常规插入到全局临时表中[它不会生成重做,因为它是临时的,因此永远不需要恢复]。然后,最后,一个 INSERT/*+APPEND */ 从临时表插入到真实表中。如果真实表定义为 NOLOGGING,附加提示将告诉它不要生成重做。

于 2010-03-04T22:07:18.667 回答
0

尽管问题已经过去了 9 年,但我认为正确的答案是(它对我有用)

 Public Shared Sub PerformBulkCopy(ByVal dt As DataTable, ByVal sTableName As String)
    Try
        Using Conn As Oracle.DataAccess.Client.OracleConnection = New Oracle.DataAccess.Client.OracleConnection(System.Configuration.ConfigurationManager.ConnectionStrings.Item("ConnectionString").ToString)
            Conn.Open()

            Using s As Oracle.DataAccess.Client.OracleBulkCopy = New Oracle.DataAccess.Client.OracleBulkCopy(Conn)

                s.DestinationTableName = sTableName
                s.WriteToServer(dt)
                s.Close()

            End Using

            Conn.Close()
        End Using
    Catch err As Exception
        Debug.Print(err.Message)
        commonFunctions.OutLog(err.Message)
    End Try
End Sub
于 2020-08-21T00:51:10.460 回答