質問: accessのデータをoracleへinsertする方法 環境 vb6、access2000、oracle10g、os:winxp pro accessの中にある30,000件のレコードをvb6でoracle10gに日常的にinsertしようと考えてます。(ボタンクリック時etc) insert into 『oracleのテーブル名』 select * from 『accessのテーブル名』 とは記述できないと思うのですが、30,000回 loop→insertさせると 15分くらい掛かります。何か処理速度を早くなる良い方法はありませんか? お知恵をお貸し下さい。宜しくお願い致します。
回答: こんにちは。 パフォーマンス向上についてですが、質問者さんとして「遅い」と 感じられるボトルネックの箇所はどこにあると思いますか? (それがわかってしまったら質問しないでしょうけど) 例えば、データ移行の方法1つを見ても方法は沢山あります。 質問者さんのようにバッチプログラムを作って移行する方法は、 その1つに過ぎません。 劇的に向上を図りたいのであれば、ローダを使ったり、 トランザクションなどを上手に使うべきです。 現行の方法を採用するのであれば、早くする方法として、 oracle データベースの移行先に定義されたインデックスを すべて削除し、その状態にinsertを発行するというものです。 このとき、トランザクションで実行し、例えば、10000件ごとに コミットをする、というようなやりかたをすれば早くなります。 動作の原理については、インデックスが無い状態ですので、 1件insertされたときに、インデックスへの書き込みが無い、 というのと、トランザクションを使用することによって、 表領域への書き込み頻度の低下、ということで向上が見込まれます。 あとは、あまり触れたくはありませんが、ミドルウェアの選択です。 vb6 からだと oo4o を使うのが最も効果的(?)らしいですが、 何を使って接続されていますか?