从Excel电子表格更新Oracle数据库表的SQL语句

时间:2012-03-09 18:58:05

标签: sql excel

我想编写一个SQL Update命令,该命令可以每年运行一次,以根据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”且其中我在电子表格上具有匹配帐号的值的每条记录,请在Oracle USER_DEFINED表中更新该记录的VALUE字段,其中包含“ “电子表格中的值”列。

1 个答案:

答案 0 :(得分:0)

不完全是你要求的,但如果我是你(因为这是一年一次),我会使用连接公式在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,你就完成了!