プロが教えるわが家の防犯対策術!

お知恵を貸してください。

ただ今、VB.NETでアクセスで開発されたアプリケーションを、
VB.NETに移行する開発をしているのですが、その中で、
現在のDBはアクセス、移行後のDBはオラクル10gなんですが、
何か良い移行方法は無いでしょうか?
ちなみに、テーブル名、レコード名は変更しますので、そのまま移行ではありません。

私が考えているのは、アクセスのデータをエクセルにコピペし、
それを.NETで読み込んでテープルに入れて1レコードずつ
オラクルに書き込んで行こうと考えております。

しかし、上記の方法でエクセルの読込方法が良く分かりません。
一旦、エクセルに取込む方法の場合の読込方法を教えてください。

また、もっと効率の良い方法をご存知でしたら教えてください。

開発環境は 
OS : windows XP Pro
開発ソフト : VB.NET
DB : Access 2003 SP2
DB : Oracle 10g
です。なにぶん、VBでの開発経験が浅いので、
猿でも分かるように(W)お教えいただけると幸いです。

A 回答 (2件)

テーブル名やレコード名(カラム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)
--------------------------------------------------------------
私のは完全に我流なので、きれいじゃないけど、こんな感じにしました。
もし、ご参考になるのであれば。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
何とかできました。
できたのに!データがテキストであるらしい…何も悩む必要ありませんでした。
又、よろしくお願いします。

お礼日時:2007/08/30 10:06

.net開発経験は無いのですが、結局はAccessMDBの内容をOracleに放り込む


だけですよね?
それなら、Accessで更新クエリなりVBAで簡単にデータ移行プログラムを
作ってやれば簡単なような気がしますが。
AccessからOracleへの接続はリンクテーブルでOKだと思います。
データ多いならADOをオススメしますが。

この回答への補足

おはようございます。ご回答ありがとうございます。

データ量としてはあまり多くないのですが、
テーブル名とレコード名の変更がありますので、
そのままデータ移行というわけには行かないような…

そのADOってやつなんですが、調べても良く分かりません。
分かりやすいサイトなんてあればご教示いただけますと
幸いです。

補足日時:2007/08/29 09:13
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!