只有安装了oracle 11G客户端的机器上才可以用,要用到ODP.NET组件中的oracleDataAccess.DLL,命名空间引用为Oracle.DataAccess.Client;
引用:Oracle.DataAccess.Client.OracleBulkCopy
官方下载地址(ODP.net)(中文):http://www.oracle.com/technetwork/cn/topics/dotnet/downloads/index.html
官方下载地址(ODP.net):http://www.oracle.com/technetwork/topics/dotnet/downloads/index.html
#region 批量插入数据 ////// 批量插入数据 /// /// 要插入的数据 /// 数据库中的表 public static void BulkToDB(DataTable dt, string targetTable) { OracleConnection conn = new OracleConnection(connOrcleString); OracleBulkCopy bulkCopy = new OracleBulkCopy(connOrcleString, OracleBulkCopyOptions.UseInternalTransaction); //用其它源的数据有效批量加载Oracle表中 //conn.BeginTransaction(); //OracleBulkCopy bulkCopy = new OracleBulkCopy(connOrcleString, OracleBulkCopyOptions.Default); bulkCopy.BatchSize = 100000; bulkCopy.BulkCopyTimeout = 260; bulkCopy.DestinationTableName = targetTable; //服务器上目标表的名称 bulkCopy.BatchSize = dt.Rows.Count; //每一批次中的行数 try { conn.Open(); if (dt != null && dt.Rows.Count != 0) bulkCopy.WriteToServer(dt); //将提供的数据源中的所有行复制到目标表中 } catch (Exception ex) { throw ex; } finally { conn.Close(); if (bulkCopy != null) bulkCopy.Close(); } } #endregion
注意事项:
OracleBulkCopy Class in Oracle.ManagedDataAccess.dll?
论坛地址:https://stackoverflow.com/questions/26941161/oraclebulkcopy-class-in-oracle-manageddataaccess-dll
------------------------------------------------------------------------------------------------------------------------
Oracle.ManagedDataAccess.dll 中没有 OracleBulkCopy此方法,请注意!!!!!!
------------------------------------------------------------------------------------------------------------------------
问:
我使用OracleBulkCopy类引用Oracle.DataAccess.dll。我想使用Oracle.ManagedDataAccess。dll,便于部署。但是后来我犯了一个错误"没有找到"OracleBulkCopy "
有人知道为什么OracleBulkCopy不包含在Oracle.ManagedDataAccess.dll中吗?
------------------------------------------------------------------------------------------------------------------------
答:
在此期间,ODP不支持编写OracleBulkCopy。净,司机管理。
原因是不包括只是一个特性优先的问题。当托管驱动程序变得更加完整,最终将添加OracleBulkCopy类。
在未来,任何人都可以看到“ODP之间的差异”。NET托管驱动程序和非托管驱动程序“最近ODP的一部分”。NET book查看不支持的内容:
https://docs.oracle.com/cd/E56485_01/win.121/e55744/intro004.htm#ODPNT8146
https://apex.oracle.com/pls/apex/f?p=18357:39:28710406382793::NO::P39_ID:27881
如果我们获得足够的选票,他们可能会实施。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Oracle.DataAccess.dll 部署安装
Oracle.DataAccess.dll 要拷贝到项目发布目录
项目发布的时候,还必须要拷贝以下几个文件在运行目录
1、oci.dll
2、oraociicus11.dll
3、OraOps11w.dll
4、oraons.dll
在开发机器上看了Oracle.DataAccess.dll 版本是2.112.1.2 ,测试服务器上的是2.112.1.0。杯具。。。找到原因了,两个版本号不一致。而且发现客户机上无64位的Oracle.DataAccess.dll.
IIS中只能开始32位应用程序支持。赶紧找解决办法:
解决办法就是在web.config中修改,在configSections节点结束之后增加如下内容:
culture="neutral" />
newVersion="2.112.1.0"/>