簡體   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