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

Python 使用Excel中的数据更新(Oracle)数据库,python,excel,oracle,plsql,Python,Excel,Oracle,Plsql,我有这样一个Oracle表:订单ID、项目ID。 订单ID是主键。 项目ID应该有一个值,但在许多情况下为空。 现在,我有一个订单ID和项目ID的列表,这是正确的数据,但在excel中。 我必须更新oracle数据库以匹配以下项目: Oracle数据库中的错误数据: Order_ID, Project_ID 1000, 20090 1001, null 1002, null 订单号,项目号 1000, 20090 1001,空 1002,空 Excel中提供的正确

我有这样一个Oracle表:订单ID、项目ID。
订单ID是主键。
项目ID应该有一个值,但在许多情况下为空。
现在,我有一个订单ID和项目ID的列表,这是正确的数据,但在excel中。
我必须更新oracle数据库以匹配以下项目:

Oracle数据库中的错误数据:

Order_ID, Project_ID 1000, 20090 1001, null 1002, null 订单号,项目号 1000, 20090 1001,空 1002,空 Excel中提供的正确数据:

Order_ID, Project_ID 1001, 22565 1002, 25548 订单号,项目号 1001, 22565 1002, 25548 Oracle数据库中的更新数据应如下所示:

Order_ID, Project_ID 1000, 20090 1001, 22565 1002, 25548 订单号,项目号 1000, 20090 1001, 22565 1002, 25548 请记住,我不是在寻找sql语句来为每个ID/行进行更新,而是想象我要进行数百万次更新,并希望通过一个循环将其自动化

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


谢谢

从excel加载有多种方法。您可以将其转换为csv并通过SQL*Loader加载,使用第三方软件包加载excel,使用外部表等。但是,一个简单的方法是使用SQL developer。下面是杰夫·史密斯的一篇文章,描述了如何做到这一点

为了您的方便, 创建一个与Orders表结构相同的
\u tmp
表,并将excel转储到该表中

Create table Orders_tmp as select * FROM Orders where 1=0;
然后使用简单的
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;

检查我的答案,让我知道它是否有效。请阅读:stackoverflow.com/help/someone-answers