質問: access → oracleへのデータ移行(vb.netで) お知恵を貸してください。 ただ今、vb.netでアクセスで開発されたアプリケーションを、 vb.netに移行する開発をしているのですが、その中で、 現在のdbはアクセス、移行後のdbはオラクル10gなんですが、 何か良い移行方法は無いでしょうか? ちなみに、テーブル名、レコード名は変更しますので、そのまま移行ではありません。 私が考えているのは、アクセスのデータをエクセルにコピペし、 それを.netで読み込んでテープルに入れて1レコードずつ オラクルに書き込んで行こうと考えております。 しかし、上記の方法でエクセルの読込方法が良く分かりません。 一旦、エクセルに取込む方法の場合の読込方法を教えてください。 また、もっと効率の良い方法をご存知でしたら教えてください。 開発環境は os : windows xp pro 開発ソフト : vb.net db : access 2003 sp2 db : oracle 10g です。なにぶん、vbでの開発経験が浅いので、 猿でも分かるように(w)お教えいただけると幸いです。
回答: テーブル名やレコード名(カラムidの間違い?)が変更になるのであれば、 移行元のアクセスvbaで移行先のoracledbをオープンして、対応するテーブル・カラムにデータを入れるようにするのがいいんじゃないでしょうか。 わざわざ.netにしなくてもexcelにしなくてもaccess vbaで十分でしょう。 ※とかいいながら、私はvb.netで作ったので、こんな感じです。imports system.data imports system.data.oledb imports system.data.oracleclient public in_conn as oledbconnection '-- accessコネクション public out_conn as oracleconnection '-- oracleコネクション dim accessdbprovider as string accessdbprovider = "provider=microsoft.jet.oledb.4.0;data source=なにか" in_conn = new oledbconnection(accessdbprovider) in_conn.open() out_conn = new oracleconnection("data source=tns名;user id=ユーザid;password=パスワード") out_conn.open()これで、accessとoracleが同時に開けているので、あとはin_conn側からデータを読み込んで、out_conn側でデータを出力するようにします。 カラム数が変わらず、カラムの順序もタイプも変わらないのなら、単純に読み込んだものを出力するだけです。dim mydataset as dataset dim myoracommand as oraclecommand dim myoradataadpt as oracledataadapter dim mycommand as oledbdataadapter dim mytable as datatable dim myrow as datarow sql = "select * from access_tbl" mycommand = new oledbdataadapter(sql, in_conn) mydataset = new dataset mycommand.fill(mydataset) sql = "select * from oracle_tbl" '-- 0件のデータを読むことになるけど、テーブル構造が欲しいので取得する myoracommand = new oracledataadapter(sql, out_conn) myoracommand.update(mydataset)私のは完全に我流なので、きれいじゃないけど、こんな感じにしました。 もし、ご参考になるのであれば。