2012-03-09 17 views
0

受信した外部値に基づいて、Oracleデータベース内のすべてのアカウントのレコードを更新するために年1回実行できるSQL Updateコマンドを作成したいとします。優れたスプレッドシート。ExcelスプレッドシートからOracleデータベース表を更新するSQL文

私の研究これまで私は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 

することは、誰かが私は正しい道の上にいます確認することができますまたはさらに良い基本的な例を提供する?

基本擬似ロジックは次のとおりです。CODE_FIELDが "CRS"に等しいOracle USER_DEFINEDテーブル内のすべてのレコードについて、一致するアカウント番号のスプレッドシートに値がある場合は、VALUEフィールドを更新します。 Oracle USER_DEFINEDテーブルに、「値」列の内容をスプレッドシートに記録します。

答えて

0

あなたの要求は厳密ではありませんが、私があなただったら(これは1年に1回です)、連結式を使用して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のに更新ステートメントの結果のシリーズを貼り付けます。あなたのDBに一致していないものは更新を引き起こさず、一致するものは更新されます。

最後にcommitを実行すると完了です!

+0

興味深いオプションですが、私は何かを探していますが、私はマクロを作成することができ、スケジュールにしたがって技術者以外の専門家が走っているだけです。しかし、提案をありがとう。 –

関連する問題