C#操作 Oracle 的时候,批量导入是个绕不开的需求。尤其你遇到几十万行甚至上百万行的数据,逐条插入简直让人抓狂。这时候,OracleBulkCopy就挺好用的,写法也不复杂,用好了效率杠杠的。
Oracle 的 ODP.NET 驱动是关键,你得先装上它(可以通过 NuGet 装Oracle.DataAccess.Client
),不然 C#连 Oracle 都连不上。连接字符串那块也挺有讲究,记得把HOST
、SERVICE_NAME
写对,不然老是报错。
连接成功之后,接下来就可以搞个OracleCommand
准备 SQL 语句了,但真正的主角是OracleBulkCopy
。这个类专门为批量插入设计的,性能比普通插入强不少,关键是简单好用。
数据源可以从DataTable
来,也可以是CSV
或Excel
转成DataTable
,都行。设置一下ColumnMappings
,一一对应目标表的字段就行,别弄错顺序就好。
一步就是bulkCopy.WriteToServer(dt)
,直接把数据全推进去,一次搞定,响应也快。别忘了Close()
一下连接,避免资源泄漏。
性能优化方面,设置 BatchSize挺重要的,别设太小,不然效果不;也别太大,容易内存爆掉。还有就是事务控制,出错了能回滚,数据更安全。
哦对了,如果你还没接触过 ODP.NET,可以看看这几个文档:
如果你项目里有大量数据需要导进 Oracle,强烈建议试试这个方案,真的省事不少。