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

解決済みの質問

テーブルに変更があったらCSV出力

Oracle上のあるテーブルに変更があったら、そのテーブルのデータをCSVに出力するということをしたいのですが、どのようにするのが、よいでしょうか?知恵を貸してください。

ちょっとだけ考えたこととして、Trigger機能がうまく利用できないかと思ったのですが、CSVと連動するのが難解で悩み中です。
どうか、ご教授ください。お願いします。

投稿日時 - 2006-07-14 16:23:30

QNo.2275748

困ってます

質問者が選んだベストアンサー

>Oracle上のあるテーブルに変更があったら・・

テーブルに変更というのが、データの挿入/更新/削除なのか、テーブル構造なのかで
トリガの種類は変わりますが、理屈の上では実現可能かと思います。

内容が判らないので、具体例は書きませんが、注意すべき点としては・・

テーブルデータの修正は、同時に複数のセッションから発生しうるので、
トリガも同時に動作する可能性を秘めています。
しかし、単一のCSVファイルへの出力は、複数のトランザクションから
同時には行えません。
CSVファイルを分けるなり、順次出力されるような方策を考える必要があります。

投稿日時 - 2006-07-17 03:31:43

補足

お返事ありがとうございます。
CSV出力が、No.1の回答の人の補足に書きましたように、困難なので、他に方法があれば、教えていただきたいです。
重ね重ね申し訳ありませんが、どうかお願いします。

投稿日時 - 2006-07-18 11:06:48

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

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

回答(4)

初期化パラメータに、"UTL_FILE_DIR=*"を指定することで、
初期パラメータでのディレクトリ制約を抑制できます。

但し、セキュリティレスな運用になりますので、それで良いかの
判断は必要です。

投稿日時 - 2006-07-18 12:51:45

お礼

いつも、お返事ありがとうございます。
その方法を関係者に話したところ、やはりセキュリティーの面で、NGと言われました。
手運用にしようと思いはじめました。
ありがとうございました。

投稿日時 - 2006-07-19 16:25:07

ANo.3

DBのバージョンが9.2以降なら、UTL_FILEパッケージで指定するディレクトリはCREATE DIRECTORYで作成されたディレクトリオブジェクトを設定します。utl_file_dir初期化パラメータは使用しません。
これならDBの再起動は不要です。
(バージョンが合っていることが前提になりますが・・・)

投稿日時 - 2006-07-18 12:43:32

お礼

お返事ありがとうございます。
残念ながら、8iです。
アドバイスありがとうございました。

投稿日時 - 2006-07-19 16:22:49

ANo.1

トリガーと、ファイル出力パッケージを利用すれば出来そうですね。

参考URL:http://634.ayumu-baby.com/plsql/plsql_util_file.html

投稿日時 - 2006-07-14 16:27:14

補足

お返事ありがとうございました。
URL参照いたしました。ファイル出力の際に、UTL_FILEにディレクトリー指定がなく、仮にしても、Oracleの再起動が必要だということで、ファイル出力パッケージは、却下されそうです。
他にいい案があれば、教えていただきたいです。

投稿日時 - 2006-07-18 11:02:52

あなたにオススメの質問