Java
從 CSV 文件批量更新/插入數據庫
我正在實現從一個數據庫到另一個數據庫的特定於應用程序的數據導入功能。
我有一個包含 10000 行的 CSV 文件。這些行需要插入/更新到數據庫中。
可能存在這樣的情況,即數據庫中可能存在幾行,這意味著需要更新這些行。如果數據庫中不存在,則需要插入。
一種可能的解決方案是,我可以逐行閱讀,檢查數據庫中的條目並相應地建構插入/更新查詢。但是這個過程可能需要很多時間來創建更新/插入查詢並在數據庫中執行它們。有時我的 CSV 文件可能有數百萬條記錄。
有沒有其他更快的方法來實現這個功能?
Oracle 中有一種很好的技術,稱為外部表。在您的場景中,您可以使用數據庫中的外部表訪問您的外部純文字數據,並使用您喜歡和習慣的 SQL 語句更新數據庫中的現有數據 - 例如,
INSERT
等MERGE
。在大多數情況下,使用 Oracle 提供的實用程序是執行 ETL 的最佳方式。而且因為您的問題聽起來更像是管理問題,我建議您查看我之前在 DBA Stack Exchange 上的文章“從 CSV 更新 Oracle 數據庫”。
更新:這種方法非常適合讀取數據庫中的外部數據。通常,每次需要處理具有新格式的純文字文件時,您都會定義外部數據格式。創建外部表後,您可以像查詢真實數據庫表一樣查詢它。每當有新數據要導入時,您只需即時替換底層文件,而無需重新創建外部表。由於可以像查詢任何其他數據庫表一樣查詢外部表,因此您可以編寫 SQL 語句來填充其他數據庫表。
與手動實施的其他技術相比,使用外部表的成本通常較低,因為該技術的設計考慮了 Oracle 數據庫體系結構的性能。