2012-03-09 88 views
0

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

我的研究迄今是表明我可能能够使用OPENROWSET命令,但大多数引用都出现了从Excel这个用于MS SQL服务器:

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

有人可以验证我是在正确的道路上甚至更好地提供一个基本的例子?

基本的伪逻辑如下: 对于Oracle USER_DEFINED表中的每个记录,其中CODE_FIELD等于“CRS”和在那里我有一个匹配的帐户数在电子表格上的数值,更新值字段Oracle USER_DEFINED表中的记录与电子表格中“值”列的内容。

回答

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,你就完成了!

+0

有趣的选择,但我正在寻找的东西,我可以创建一个宏,只是有一个非技术专家根据时间表运行。 (还是)感谢你的建议。 – 2012-03-10 18:40:23