我有一个这样的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,但也欢迎使用其他技术。
谢谢!
答案 0 :(得分:1)
从excel加载有多种方法。你可以将它转换为csv并通过SQL * Loader加载,使用第三方软件包加载excel,使用外部表等。但是,一个简单的方法是使用SQL开发人员。以下是杰夫史密斯的一篇文章,介绍了如何做到这一点。
为方便起见,
使用与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;