あなたの「必」の書き順を教えてください

すみません、データーベース初心者なので教えてください。
sybaseで毎週、週1回決まったDBのある項目を更新しなくてはいけません。
項目はきまってるのですが、更新する値が毎回違います。
普段は毎回sqlのスクリプトの内容を書き換えてコマンドラインから実行しています。
sqlのスクリプトの内容は以下のような感じです。

update A_DATA set bbb = 'あいうえお' where ccc=1

みたいな単純な更新です。
ただ毎回 bbbの項目にセットする内容が変わります。


何かいい方法、そのような事がのっているサイトがありましたら
教えてください。

よろしくお願いします。

A 回答 (2件)

自動更新というのはいちいちスクリプトを編集せずにということかな。


次のようなスクリプトを作ればいちいち編集する必要はないですよね。
unix 環境と仮定してですが、

#!/usr/bin/sh

isql -Uusername -Ppassword -Jeucjis << EOF
use dbname
go
update A_DATA set bbb="$1" where ccc=1
go
EOF

というシェルスクリプトを作成して(そのファイル名を A_DATA_UPD
としましょう)

% A_DATA_UPD あいうえお

のようにすればいちいち編集する必要はなくなります。
ヒアドキュメントとシェル変数の展開を応用すれば結構いろいろ
なことができますよ。
シェルスクリプトの一般的な話なので、市販本を読んでみてみると
いいかもしれませんね。

前もって変更する値がわかっていれば VDSLさんのようにテーブルを用意する
という方法もありますね。
SYBASE はサブクエリを使わなくても

update A_DATA set bbb = TempTable.bbb
from TempTable
where ccc = 1 and TempTable.bbb = getdate()

でOKです。
    • good
    • 0

私はOracle使いなので一般論になってしまいますが....



bbbの将来の値があらかじめわかっているのであれば、年月日をキーとし、bbbが1:1で対応するようなテーブルをDB上に用意しておいて、

update A_DATE set bbb = (select bbb from TempTable where 年月日 = sysdate) where ccc=1

みたいな感じのSQLを用意し、それをcronで週一回実行されるように設定すればいいと思います。
#sybaseでupdate文の中にサブクエリが書けるかどうかは調べてみてください。

当然ですが、あらかじめbbbの値がわからなければ、どうやっても自動化は不可能です。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報