从 C# 控制台应用将大约一百万条记录插入 Oracle 的有效方法是什么?



我有一个 C# 控制台应用程序,我正在使用实体框架将大约一百万条记录插入到 Oracle 11 数据库中。第一次运行花了12个多小时,我最终不得不杀死它。我目前正在记录插入,以便我可以看到发生了什么,我确信这会减慢一些速度。没有错误,只是需要很长时间才能插入那么多文件。

有人建议查看适用于 Oracle 的 SQL Loader,但我是 Oracle 的新手,我不确定我可以从控制台应用程序内部运行它,然后我必须确保它成功完成,然后再继续创建和导出文件的应用程序的下一部分。

关于我可以查看什么以使插入更快发生的任何建议?

不能将 EF 用于这种大型作业。我的意思是,你可以,但正如你所看到的,效率不高。

这里最好的方法是使用 ODP.NET(http://www.oracle.com/technetwork/topics/dotnet/index-085163.html)并制作一个普通的旧PL-SQL插入。

看看这个答案:使用 .NET 批量插入到 Oracle 有关更多详细信息或示例实现 http://www.oracle.com/technetwork/issue-archive/2009/09-sep/o59odpnet-085168.html

显然,您仍然可以将 EF 用于其他所有内容,您只需要做一些安排即可使用普通的旧 pl-sql 实现此步骤。这就是我使用SQL Server的方式。

希望对您有所帮助。

说真的,看看SQL*Loader。阅读图罗里尔。它的速度快得离谱。其他任何事情都只是浪费时间,无论是运行时还是您的时间。您可能可以学习如何使用它并在运行任何替代解决方案所需的时间内插入所有数据。

可以使用 Process 类从控制台应用程序启动外部进程。

使用 SQL*Loader 或 。Net的Oracle批量加载器机制,它依赖于 ODP.Net 数据提供程序。 SQL*Loader 对 Oracle 来说更"原生",但 ODP.Net 是纯托管代码,无需使用外部进程。

这里有一篇很好的文章,可以帮助进一步介绍这些主题:使用 .NET 批量插入到 Oracle

最新更新