我想编写一个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字段,其中包含“ “电子表格中的值”列。
答案 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
,你就完成了!