使用Oracle.DataAccess& amp;从Oracle数据库批量插入Oracle。 VB.net

时间:2010-03-04 17:01:39

标签: vb.net oracle import bulk

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

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

感谢

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

答案 2 :(得分: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