我正在将 csv 文件读取到 vb.net 中的数据表中,并进行一些检查并附加一个额外的列。然后,我想使用 microsofts Oracle.DataAccess(在此没有选择)对 Oracle 数据库执行批量插入。
执行此操作的最佳方法是什么,因为 SQLserver 中没有 bulkImport。
谢谢
我一直在寻找类似的路线,但遇到了死胡同。我从 Microsoft Corp 的 ADO .NET 团队项目经理 Pablo Castro 的声明中了解到,SqlBulkCopy 包含在 ADO.NET 2.0 中,位于 SQL Server 的 .NET 提供程序 (SqlClient) 中。他们的 OracleClient 提供程序不支持批量复制。
为什么要批量插入而不是常规插入?
如果要避免生成重做日志条目,最好的办法是常规插入到全局临时表中[它不会生成重做,因为它是临时的,因此永远不需要恢复]。然后,最后,一个 INSERT/*+APPEND */ 从临时表插入到真实表中。如果真实表定义为 NOLOGGING,附加提示将告诉它不要生成重做。
尽管问题已经过去了 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