こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

テーブルの行を動的なキーをもとに削除したい

基本的な質問でしたら恐縮です。
Oracle 11gデータベースを使用しています。あるテーブルから、特定のキーを削除するSQL文は書けます。例えば、USER_IDが0020、0019の二行を削除したい場合以下のようにすると思います。
DELETE FROM USER_MASTER
WHERE USER_ID IN ('0020', '0019');

今やりたいのは、このキーを他のCSVファイルなどに記述させ、(例.
0020, 0019, 0037, ...)この値をバッチファイルから読み込んで削除するようにしたいです。そうすれば、日次でCSVを更新すれば毎日別の行を削除でき汎用的にできるからです。CSVに記述する値の数は可変としたいのですが、このように動的に処理することは可能でしょうか? 普通のSQLではなく何等かのプログラムが必要かと思いますが、これがPL/SQLというものでしょうか?

もし、簡単にPL/SQLで作成できるようなものであれば、どなたかご提示頂けないでしょうか。あと、バッチファイル(WindowsでもUNIX版でも)からそれを呼び出すところまでご教示頂けるのなら大変助かります。

以上、宜しくお願いします。

投稿日時 - 2015-07-02 20:56:47

QNo.9004910

困ってます

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

DBがあるサーバもしくは接続可能なクライアントからの実行が前提ですが、
CSVに対象が記載され、変な話そのままINに入れてクエリを投げたいだけ、
かつ、バッチやシェルが使える、というのであれば、
PL/SQLなんて大げさなことは要らないと思います。

バッチorシェルで
CSVから1行まるごと読み込む
DELETE文に加工して別ファイルに出力
SQLPlusでDB接続
STARTコマンドで外部ファイルのクエリ実行
コミット
DB接続を切断
終了

でいける気がします。

投稿日時 - 2015-07-08 15:10:59

あなたにオススメの質問