c# oracle 批量入库 odp.ner,C# OracleBulkCopy 批量插入oracle数据库的方法

只有安装了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, stringtargetTable)

{

OracleConnection conn= newOracleConnection(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)

{throwex;

}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查看不支持的内容:

答:

如果我们获得足够的选票,他们可能会实施。

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节点结束之后增加如下内容:

publicKeyToken="89B483F429C47342"

culture="neutral" />

oldVersion="2.112.1.2"

newVersion="2.112.1.0"/>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值