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

时间:2018-04-20 14:16:31

标签: python excel oracle plsql

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

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

Order_ID, Project_ID
1000,     20090
1001,     null
1002,     null

在Excel中提供的正确数据:

Order_ID, Project_ID
1001,     22565
1002,     25548

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

Order_ID, Project_ID
1000,     20090
1001,     22565
1002,     25548

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

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

谢谢!

1 个答案:

答案 0 :(得分:1)

从excel加载有多种方法。你可以将它转换为csv并通过SQL * Loader加载,使用第三方软件包加载excel,使用外部表等。但是,一个简单的方法是使用SQL开发人员。以下是杰夫史密斯的一篇文章,介绍了如何做到这一点。

Import from Excel

为方便起见, 使用与Orders表相同的结构创建一个_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;