簡體   English   中英

如何通過不繞過任何觸發器來更新Oracle db中的大量數據?

[英]How to update a bulk of data in Oracle db by not bypassing any trigger?

我們正在運行一個小型IT企業的非常罕見的erp系統,它不允許我們以廣泛的方式修改數據。 我們考慮過要通過從數據庫直接導出要更改的數據並使用Excel VBA更新一堆不同表的數據來進行數據更新。 現在,我們在excel中更新了數據,該數據應該寫入Oracle DB。 IT業務支持告訴我們不要這樣做,因為在其程序中定期更新數據期間,所有觸發器都在后台運行。 我們非常害怕損壞數據庫,因此我們正在尋找無需繞過任何觸發器即可進行數據更新的最佳方法。 更具體地說,我們在不同的列和表中進行了數千項更改,這些更改將所有合並到一個Excel文件中。 現在,我們必須確保將修改后的數據插入db,並觸發erp軟件在數據更新期間執行的所有觸發器。

有誰知道這樣做的好方法嗎?

我不知道您使用的是什么ERP系統,但是我可以介紹一些來自Oracle電子商務套件的經驗。

如今,Oracle的ERP包括一組強大的API,這些API可使您的自定義程序安全地維護ERP數據。 例如,如果您要修改銷售訂單,則可以使用Oracle API來確保達到所有必要的相關驗證和邏輯。

因此,第1步-了解您的ERP系統是否提供任何API,以允許您安全地更新數據。

早在Oracle ERP的初期,API並不多。 在那些日子里,當我們需要更新大量表並且沒有可用的API時,下一種方法是使用某種數據加載器工具。 實際上,最受歡迎的是“ Data Loader”。 要做的就是從Excel電子表格中讀取數據並將其發送到ERP的用戶界面-就像用戶在鍵入數據一樣。 由於數據通過ERP的UI,因此所有必要的驗證和邏輯將自動應用。

在非常極端的情況下,當沒有API且DataLoader出於任何原因(無論出於何種原因)都不實用時,有時仍被認為是必要的,並且值得嘗試直接自己更新ERP表的風險。 通常,這是冒險且不明智的做法,但有時我們會做我們必須做的事情。

在這些情況下,當用戶通過ERP的用戶界面鍵入一些更新時,我們將在用戶會話上啟動數據庫跟蹤。 然后,我們將使用跟蹤來確定在定制直接更新期間需要應用哪些驗證和相關邏輯。 我們還將分析ERP系統的源代碼(因為在Oracle ERP中可以使用它)。 然后,我們將對其進行廣泛的測試。 而且,畢竟,它仍然有風險,而且升級后也容易斷裂。 但是,總的來說,它是不得已的手段。

我的問題不在於我需要通過在流程中進行一些自動化來快速完成工作。 確實已經在excel上完成了工作,但無論如何都需要進行修改。 僅當我通過c&p將其手動通過ERP放入數據庫或一次全部不知道時。 但是我猜馬修是對的。 ERP中有驗證過程,因此我們不能將其直接寫入數據庫。 我不知道您是否可以以一種無風險的方式繞過ERP的線索,可以與我聯系。

暫無
暫無

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

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