【问题标题】:Creating an update script from Oracle using TOAD使用 TOAD 从 Oracle 创建更新脚本
【发布时间】:2012-06-26 23:20:36
【问题描述】:

在 Oracle 中,使用 TOAD,我们能够从表中创建插入脚本。

但是,我需要根据每一行的值创建一个 UPDATE 脚本

where the CLIENTID is 'blah blah'

最初,我所做的是创建一个包含所有必要数据的 Excel 电子表格,并为每一行粘贴了一个

UPDATE TABLE BLAH BLAH SET COLUMN1 = "xxx", COLUMN2 = '' where CLIENT_ID = "123'

..但是我在将电子表格导出到基于文本的 DOS 文件并将其转换为 .sql 以便进行编辑时遇到了一些困难,但它是混乱且不可预测的。

有没有人有更好的想法我可以实施?

【问题讨论】:

    标签: sql oracle toad


    【解决方案1】:

    我在 Toad 中没有看到任何有助于以这种方式编写更新查询的功能。但是直接加载数据是 Toad 非常简单的事情。

    也许你可以这样做。

    create table tmp_excel_data
    ( column1 varchar2(100),
      column2 varchar2(100),
      client_id varchar2(100)
    );
    

    使用 toad 将数据直接加载到该表中。从这一点开始更新很简单。

    update CLIENT_DATA tgt
      tgt.column1 = (select column1
                      from tmp_excel_data src
                      where tgt.client_id = src.client_id);
    
    --dont forget to commit.
    

    如果需要,这还可以让您清理数据(例如删除重复数据)。

    【讨论】:

    • 是的..我是这样想的,但是...我必须发送一个脚本来创建一个临时表,导入数据,更新表然后省略临时表,当然在生产服务器上提交..所有这些..就像向火星发送探测器并希望它着陆..:-) 非常感谢您的回复。
    • 我讨厌在 Excel 电子表格中输入数据。如果它是某种形式的文本文件,您可以做很多很酷的事情(构建外部表,然后进行相关更新或自动加载部分)。并不是说您不能自动化电子表格转换,而是在 Oracle 中很难做到所有这些。
    【解决方案2】:

    我通常会这样做:

    SELECT 'UPDATE <TABLE_NAME> SET status =''' || status || '''  WHERE id =' || ID ||';'
    FROM <TABLE_NAME>
    WHERE <condition>
    

    【讨论】:

      【解决方案3】:

      使用按钮。它丑陋但有效。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-15
        • 1970-01-01
        • 1970-01-01
        • 2015-07-16
        • 2012-07-04
        • 2019-03-06
        • 1970-01-01
        • 2017-02-22
        相关资源
        最近更新 更多