【问题标题】:SQL Statement that Updates an Oracle Database Table from an Excel Spreadsheet从 Excel 电子表格更新 Oracle 数据库表的 SQL 语句
【发布时间】:2012-03-09 18:58:05
【问题描述】:

我想编写一个 SQL 更新命令,该命令可以每年运行一次,以根据 Excel 电子表格中收到的外部值更新 Oracle 数据库中每个帐户的记录。

到目前为止,我的研究表明我可以使用 OPENROWSET 命令,但大多数参考资料都显示此命令用于从 Excel 到 MS SQL Server:

INNER JOIN 
  OPENROWSET('Microsoft.Jet.OLEDB.4.0',
             'Excel 8.0;Database=C:\foldername\spreadsheetname.xls;',
             'SELECT column1name, column2name, column3name, column4name
              FROM [worksheetname$]') EXT

有人可以验证我是否走在正确的道路上,或者更好地提供一个基本示例吗?

基本的Psuedo逻辑如下: 对于 Oracle USER_DEFINED 表中 CODE_FIELD 等于“CRS”的每条记录,并且我在电子表格上有一个具有匹配帐号的值,使用“电子表格中的“值”列。

【问题讨论】:

    标签: sql excel


    【解决方案1】:

    不完全符合您的要求,但如果我是您(因为这是一年一次),我会使用连接公式在 Excel 中创建更新语句。

    如果 Excel 的第一行/列如下所示:

    ACCT_NBR | NEW_VALUE | CONSTRUCTED_SQL_STMT
    123      | Hello     | ="Update USER_DEFINED Set VALUE = '"&B2&"' Where CODE_FIELD='CRS' And Account_Num='"&A2&"';"
    456      | World     | ="Update USER_DEFINED Set VALUE = '"&B3&"' Where CODE_FIELD='CRS' And Account_Num='"&A3&"';"
    

    然后只需将生成的一系列更新语句复制/粘贴到 SQL*Plus 中。任何在您的数据库中没有匹配的内容都不会触发更新,任何匹配的内容都会得到更新。

    在最后做一个commit,你就完成了!

    【讨论】:

    • 有趣的选项,但我正在寻找可以创建宏的东西,并且只是让非技术专家按照计划运行。不过感谢您的建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多