我正在将一个csv文件读入vb.net中的数据表并进行一些检查并附加一个额外的列。 然后,我想使用微软Oracle.DataAccess(在此选择)对Oracle数据库执行批量插入。
执行此操作的最佳方法是什么,因为没有像SQLserver中那样的bulkImport。
感谢
答案 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