首页 新闻 搜索 专区 学院

ODP.NET Oracle大数据导入时,30万数据导入正常,60万数据(excel文件15M)导入报内存不够,求指导,谢谢

0
悬赏园豆:50 [已关闭问题] 解决于 2016-03-17 14:57

30万数据导入正常,60万数据(Excel文件是15M)导入就会出现这个问题,不知道是开发机的内存不够,还是Oracle数据库所在的服务器不够内存;求指导,谢谢。

Memento的主页 Memento | 初学一级 | 园豆:126
提问于:2016-01-21 16:18
< >
分享
其他回答(2)
0

分批吧

补充:另外,大量数据导入的话,可以用SqlBulkCopy,设置好BatchSize和Timeout

jello chen | 园豆:7096 (大侠五级) | 2016-01-21 19:12

分批是可以实现,现在只是想搞清楚内存不足是哪儿的内存不足,以及有没有可行的解决方案;还有Oracle对应的是OracleBulkCopy吧,和Command绑定数组方式哪种速度更快些?

支持(0) 反对(0) Memento | 园豆:126 (初学一级) | 2016-01-22 12:27
0

SQL 语句 分批执行,你这个60W 条insert 语句 不能这么玩

Jeeris | 园豆:160 (初学一级) | 2016-01-22 09:15

我采用的是ArrayBind,columnRowData[colName]是一列数据的数组,并非60W条Insert语句执行的

支持(0) 反对(0) Memento | 园豆:126 (初学一级) | 2016-01-22 12:29
0

.net有自动回收垃圾机制,大多数程序员往往很是忽略这块(一般是有几天才会回收),一个小的运行程序没得多大的问题的,大程序需要手动释放内存吧。

唯我独萌 | 园豆:532 (小虾三级) | 2016-03-07 08:52

 手动通过GC回收也还是没有解决...

支持(0) 反对(0) Memento | 园豆:126 (初学一级) | 2016-03-10 15:20

@Memento: GC是没有办法手动回收的。执行GC.Collect()也只是请求GC做回收,但是什么时候做回收,是GC自己规划的。你这个问题看起来是是ODP.Net的一个内存泄漏问题。能提供大概的数据格式给我么?

支持(0) 反对(0) c99 | 园豆:1864 (小虾三级) | 2016-03-10 16:25

@c99: 谢谢您的回复,数据格式很一般,16列60万+行的数据,具体数据文件无法提供给您,对于内存泄漏的问题,有什么办法检测吗?

支持(0) 反对(0) Memento | 园豆:126 (初学一级) | 2016-03-10 17:08

@Memento: 不需要数据文件,使用到的数据类型呢?

支持(0) 反对(0) c99 | 园豆:1864 (小虾三级) | 2016-03-10 17:19

@c99: 

支持(0) 反对(0) Memento | 园豆:126 (初学一级) | 2016-03-10 17:21

@Memento: 谢谢。

支持(0) 反对(0) c99 | 园豆:1864 (小虾三级) | 2016-03-10 21:01
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册