30万数据导入正常,60万数据(Excel文件是15M)导入就会出现这个问题,不知道是开发机的内存不够,还是Oracle数据库所在的服务器不够内存;求指导,谢谢。
分批吧
补充:另外,大量数据导入的话,可以用SqlBulkCopy,设置好BatchSize和Timeout
分批是可以实现,现在只是想搞清楚内存不足是哪儿的内存不足,以及有没有可行的解决方案;还有Oracle对应的是OracleBulkCopy吧,和Command绑定数组方式哪种速度更快些?
SQL 语句 分批执行,你这个60W 条insert 语句 不能这么玩
我采用的是ArrayBind,columnRowData[colName]是一列数据的数组,并非60W条Insert语句执行的
.net有自动回收垃圾机制,大多数程序员往往很是忽略这块(一般是有几天才会回收),一个小的运行程序没得多大的问题的,大程序需要手动释放内存吧。
手动通过GC回收也还是没有解决...
@Memento: GC是没有办法手动回收的。执行GC.Collect()也只是请求GC做回收,但是什么时候做回收,是GC自己规划的。你这个问题看起来是是ODP.Net的一个内存泄漏问题。能提供大概的数据格式给我么?
@c99: 谢谢您的回复,数据格式很一般,16列60万+行的数据,具体数据文件无法提供给您,对于内存泄漏的问题,有什么办法检测吗?
@Memento: 不需要数据文件,使用到的数据类型呢?
@c99:
@Memento: 谢谢。