如何在批量插入时停止 System.OutOfMemoryException
您好,我正在将大约 100000 条记录放入内存中,清理数据并插入到新表中。插入大约 2000 条记录后,出现以下异常。
类型的第一次机会异常 发生“System.OutOfMemoryException” 在 Iesi.Collections.DLL 中 第一次机会 类型异常 'FluentNHibernate.Cfg.FluentConfigurationException' 发生在 FluentNHibernate.DLL
我正在使用 Fluent NHibernate。但不确定问题是否与流畅的 NHibernate 本身有关。
对数据库进行批量插入的最佳方法是什么,我想知道是否使用 stringbuilder 并构建 sql 查询。 非常感谢任何指点。
Hi I am bringing about 100000 records into memory cleaning the data and inserting into a new table. After inserting around 2000 records I get the following exception.
A first chance exception of type
'System.OutOfMemoryException' occurred
in Iesi.Collections.DLL A first chance
exception of type
'FluentNHibernate.Cfg.FluentConfigurationException'
occurred in FluentNHibernate.DLL
I am using Fluent NHibernate. but am not sure if the problem is related to fluent NHibernate itself.
What is the best way to do bulk inserts to the db, I am wondering whether to use stringbuilder and build an sql query instead.
Any pointers much appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
虽然我确信您可以采用多种技术通过 hibernate 执行此类操作,但您最好将数据清理操作构建为 SQL 语句并在数据库本身上运行。如果您需要定期运行它,您可以考虑使用存储过程。
Whilst I'm sure that there are many techniques that you can employ to do this kind of operation through hibernate, it seems likely that you would be better off constructing your data-cleansing operation as an SQL statement and running it on the database itself. If you need to run it regularly, you might consider a stored procedure.
尝试使用无状态会话:
Try using a stateless session: