繁体   English   中英

从C#console app向Oracle输入大约一百万条记录的有效方法是什么?

[英]What is an efficent way to insert about a million records into Oracle from C# console app?

我有一个C#控制台应用程序,我正在使用Entity Framework将大约一百万条记录插入到Oracle 11 DB中。 第一次运行花了12个多小时,我终于不得不杀了它。 我正在记录插入片刻,所以我可以看到发生了什么,我确信这会减慢它的速度。 没有错误,只需要插入那么多文件。

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

有关我可以看到什么的建议,使插入更快?

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

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

请看一下这个答案: 使用.NET批量插入Oracle以获取更多详细信息,或者使用.NET进行示例实现http://www.oracle.com/technetwork/issue-archive/2009/09-sep/o59odpnet-085168。 HTML

显然,你仍然可以将EF用于其他一切,你只需要做一些安排就可以用普通的旧pl-sql来实现这一步。 这就是我用SQL Server工作的方式。

希望能帮助到你。

说真的,看看SQL * Loader 阅读turorials。 它的速度非常快。 其他任何事情都只是浪费时间,包括运行时和你的。 您可以学习如何使用它, 运行任何替代解决方案所需的时间内插入所有数据。

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

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

这是一个很好的帖子,可以帮助进一步介绍这些主题: 使用.NET批量插入Oracle

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM