所以,我經常需要將數據加載到保留表中才能運行一些數據驗證檢查,然後返回結果。 通常,我創建保留表,然後創建一個sqlldr控制文件並將數據加載到表中,然後運行我的查詢。 是否有任何理由,我應該使用外部表的東西,而不是? 他們以何種方式讓我的生活更輕鬆?外部表與SQLLoader
7
A
回答
13
外部表的一大優點是我們可以使用SQL從數據庫中查詢它們。因此,我們可以將驗證檢查作爲SELECT語句運行,而不需要保存表。同樣,如果我們需要對加載的數據進行一些操作,那麼使用SQL而不是SQLLDR命令幾乎總是可以做到這一點。我們還可以使用DBMS_JOB/DBMS_SCHEDULER例程來管理數據加載,這進一步減少了對shell腳本和cron作業的需求。
但是,如果您已經有了一個成熟穩定的使用SQLLDR的流程,那麼我承認您不太可能從移植到外部表中獲得巨大的好處。
還有一些情況 - 特別是如果您正在加載數百萬行 - 其中SQLLDR方法可能會更快。不過,差異將不會像更新版本的數據庫那樣標記。我完全期望SQLLDR最終將被棄用,以支持外部表。
3
如果你看一下外部表的語法,它看起來很像:-)
SQL * Loader控制文件的語法如果外部表是要在多個查詢被反覆使用它可能會更快加載表(正如你現在所做的那樣),而不是重新掃描每個查詢的外部表。正如@APC所指出的,Oracle正在對它們進行改進,所以取決於您的數據庫版本YMMV。
3
我會使用外部表的靈活性。
它更容易修改其中的數據源是一個不同的文件alter table ... location ('my_file.txt1','myfile.txt2')
你可以做多表插入,合併,通過管道函數等運行...
並行查詢更加容易。 ..
它還建立依賴關係更好...
的代碼存儲在數據庫中,所以它會自動備份......
0
您可以對外部表執行的另一件事是讀取壓縮文件。例如,如果您的文件是gzip壓縮的,那麼您可以在外部表定義中使用PREPROCESSOR指令,以在讀取文件時解壓縮文件。
相關問題
- 1. SQLLoader通配符
- 2. 使用SQLLOADER
- 3. REGEXP_REPLACE在ORACLE SQLLoader
- 4. 外部樣式表與鉻
- 5. Div與外部樣式表?
- 6. oracle表中約束NOT NULL的sqlloader
- 7. 沒有ControlFile的SQLLoader
- 8. oracle sqlloader paraller模式
- 9. 與外部JSON
- 10. 與外部列
- 11. 與外部SSO
- 12. 與外部LDAP
- 13. PHP表單驗證與外部處理
- 14. SQL服務器:與外部表
- 15. Oracle外部表與dba的目錄
- 16. 文件夾與外部表的Oracle
- 17. 內部與外部存儲
- 18. zooKeeper外部與內部?
- 19. SQLLoader,密碼中包含@ -signs
- 20. 錯誤時通過SQLLOADER
- 21. 使用sqlloader加載文件
- 22. SQLLOADER當子句包括空
- 23. 預言SQLLOADER在文件
- 24. SQLLoader奇怪的行爲
- 25. 與外部條件
- 26. NoClassDefFoundError與外部jar
- 27. 與相對外部
- 28. 外部JS與Wordpress
- 29. 與外部的「C++」
- 30. 與外部指針
+1,所有的優點。 – DCookie 2009-11-20 18:27:27