【问题标题】:Update (Oracle) DB with Data from Excel使用 Excel 中的数据更新 (Oracle) DB
【发布时间】:2018-10-01 07:05:48
【问题描述】:

我有一个这样的 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 语句来为每个 id/行执行此操作,而是想象我有数百万次更新要进行并希望通过循环自动执行它。

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

谢谢!

【问题讨论】:

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

标签: python excel oracle plsql


【解决方案1】:

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

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;

【讨论】:

    猜你喜欢
    • 2020-08-21
    • 2012-06-11
    • 2022-10-13
    • 2014-05-06
    • 1970-01-01
    • 2011-01-08
    • 1970-01-01
    • 1970-01-01
    • 2012-02-26
    相关资源
    最近更新 更多