使用 Excel 中的数据更新 (Oracle) 数据库

use*_*951 1 python oracle excel plsql

我有一个像这样的 Oracle 表:Order_ID、Project_ID。
Order_ID 是主键。
Project_ID 应该有一个值,但在许多情况下保留为空。
现在我有一个 Order_ID 和 Project_ID 的列表,这是正确的数据,但这是在 Excel 中。
我必须更新我的 oracle 数据库来匹配项目,如下所示:

我的 Oracle 数据库上的错误数据:

订单_ID、项目_ID
1000, 20090
1001,空
1002,空

Excel 中提供的正确数据:

订单_ID、项目_ID
1001、22565
1002, 25548

Oracle 数据库中的更新数据应如下所示:

订单_ID、项目_ID
1000, 20090
1001、22565
1002, 25548

请记住,我并不是在寻找 sql 语句来为每个 ids/lines 执行此操作,而是想象我有数百万个更新需要进行,并且希望通过循环将其自动化。

我很喜欢使用 PL/SQL 和 Python,但也欢迎其他技术。

谢谢 !

Kau*_*yak 6

从 Excel 加载的方法有多种。您可以将其转换为 csv 并通过 SQL* Loader 加载,使用第三方包加载 excel、使用外部表等。但是,一个简单的方法是使用 SQL Developer。这是 Jeff Smith 的一篇文章,描述了如何做到这一点。

从 Excel 导入

为了方便起见,创建一个_tmp与 Orders 表结构相同的表,并将 Excel 转储到该表上。

Create table Orders_tmp as select * FROM Orders where 1=0;
Run Code Online (Sandbox Code Playgroud)

然后用一个简单的MERGE语句来修正主表中的记录Orders

MERGE INTO ORDERS t
USING Orders_tmp s
    ON (t.order_id = s.order_id)
WHEN MATCHED
    THEN
        UPDATE
        SET t.project_id = s.project_id;
Run Code Online (Sandbox Code Playgroud)