• 締切済み

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

基本的な質問でしたら恐縮です。 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版でも)からそれを呼び出すところまでご教示頂けるのなら大変助かります。 以上、宜しくお願いします。

みんなの回答

  • y_shimizu
  • ベストアンサー率41% (27/65)
回答No.1

DBがあるサーバもしくは接続可能なクライアントからの実行が前提ですが、 CSVに対象が記載され、変な話そのままINに入れてクエリを投げたいだけ、 かつ、バッチやシェルが使える、というのであれば、 PL/SQLなんて大げさなことは要らないと思います。 バッチorシェルで CSVから1行まるごと読み込む DELETE文に加工して別ファイルに出力 SQLPlusでDB接続 STARTコマンドで外部ファイルのクエリ実行 コミット DB接続を切断 終了 でいける気がします。

関連するQ&A