繁体   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