簡體   English   中英

什么是更高效的INSERT命令或SQL Loader進行批量上傳 - ORACLE 11g R2

[英]What is more efficient INSERT command or SQL Loader for bulk upload - ORACLE 11g R2

作為新流程要求的一部分,我們將創建表格,其中包含大約3000-4000條記錄。 我們在txt文件上以純文本形式提供這些記錄的副本。

在表格中加載這些記錄給我留下了兩個選擇

  1. 使用shell腳本生成包含這些記錄的INSERT語句的SQL文件

    • 使用awk,shell變量和循環來創建這個sql的sql和腳本執行,我們可以輕松執行
  2. 使用SQL Loader。

    • 重新調整記錄列表和ctl文件生成唯一依賴項。

在占用數據庫資源方面,上述兩個選項中的哪一個最有效,在要執行此操作的客戶端服務器上的利用率。

我確實知道記錄的數量相當小,但我們可能不得不用更多的記錄(接近60,000)重復這個活動,在這種情況下,我希望從一開始就配置最好的選項。

SQL*Loader是更有效的方法。 它為您提供更多控制。 你有一個選項do DIRECT load和NOLOGGING ,這將減少重做日志的生成,並且當索引被禁用時(作為直接加載的一部分),加載會更快。 缺點是,如果負載中斷,索引將unusable

但是,考慮到優勢, SQL*Loader是最好的方法。 當你擁有數百萬條記錄並且並行運行如此多的加載作業時,你會感受到不同之處。 我聽到DBA抱怨日志大小,當我們進行CONVENTIONAL INSERT語句加載時,有200多個此類作業並行運行。 數據量越大,您在性能上看到的差異就越大。

SQL * Loader比數千個單獨的INSERT語句更有效。 但是,即使有60,000行,這兩種方法都應該在幾秒鍾內完成。

在您提到的兩個選項中,SQL * Loader絕對是最佳選擇 - 更快,更高效。

但是,我會選擇另一種方法 - 外部表格 擁有SQL * Loader的所有好處,並允許您將外部csv文件視為普通數據庫表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM