2012-03-09 86 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