SQLServer2000,2005関連のソフトウエア開発の質問です。

VB6や.NETで利用できる ADODB.RecordsetオブジェクトのSaveメソッド(あるいは似たオブジェクト)により、
あるレコードセット(例として、TBLという名のテーブルから)をxmlファイルまたはadtgファイル(あるいは似たデータファイル)を吐き出します。

Dim cn As New ADODB.Connection
Dim rs As New ADODB.Connection
...
rs.Execute "SELECT ID,YMD,NM FROM TBL WHERE YMD < '2007/10/1'"
rs.Save "c:\test.xml",adPersistXML

このエクスポートされたファイルのデータを別のDB上にインポートしたいのですが、
どのようなメソッドを用いると実現出来るのでしょうか?
可能ならば
・主キーを判断して、あれば非主キーのフィールドを更新、なければ挿入
・テーブルを作成
のいずれか、あるいは両方サポートも出来てしまうと喜ばしいです。

VB6あるいはVB.NETあたりのサンプルコードで示していただけますでしょうか?(WebサイトのリンクでもOKです)
DTSやSSIS、コマンドラインツール、GUIツール、サードパーティ製ソフトは使用できません。
いろいろすみませんが、よろしくお願いいたします。

回答の条件
  • 1人2回まで
  • 登録:2007/10/23 21:36:58
  • 終了:2007/10/30 21:40:03

回答(0件)

回答はまだありません

  • id:HISI
    XMLのファイルデータをテーブルにインポートする or XMLファイルそのものを仮想のテーブルに見立てる機能だけでもOKです。
    よろしくお願いいたします。
  • id:cx20
    あまり役に立たない情報かもしれませんが、参考まで。

    T-SQL の OPENROWSET を用いると、任意の OLE DB データソースを
    テーブルとして利用することができるようです。
    これが使えれば、手軽にテーブル更新等できそうですが、
    ADO XML をデータソースとして利用する OLE DB プロバイダとして
    何を使用してよいか分かりませんでした。

    ■ SQL Server 2005 Books Online / OPENROWSET (Transact-SQL)
    http://msdn2.microsoft.com/ja-jp/library/ms190312.aspx

    下記は、ADO レコードセットを元にテーブル更新するサンプルです。
    キー項目が見つかった場合は、キー項目以外を Update
    キー項目が見つからなかった場合は、AddNew してレコード追加
    を行っているようです。

    ■ XML による Web アプリケーション設計技法 / 6.2 データソースの更新
    http://msdn.microsoft.com/library/ja/jpdnbwebapp/htm/XMLWeb06-02.asp

    下記は、MSPersist を使用したテーブル更新のサンプルのようです。
    (自分の環境が悪いのか、使い方が良く分かっていないのか、更新できなかったのですが・・・)

    ■ ADO サンプル / Save、Open メソッドの例 (VB)
    http://msdn.microsoft.com/library/ja/jpado260/htm/mdmthsavex.asp
  • id:HISI
    >>cx20様
    どうも有難う御座います。明日早速確認してみたく思います。
  • id:HISI
    "XMLシンプルプロバイダ"(MSDAOSP)なるものがあり、早速OPENROWSETで試してみましたところ...
    (MSDAOSPについて http://support.microsoft.com/kb/271772/ja/ )

    SELECT *
    FROM OPENROWSET('MSDAOSP','Data Source=MSXML2.DSOControl.2.6;','wwwww.xml') TBL
    ----------------------------------------------------------
    メッセージ 7373、レベル 16、状態 2、行 1
    リンク サーバー "(null)" の OLE DB プロバイダ "MSDAOSP" の初期化プロパティを設定できません。
    ----------------------------------------------------------
    とでてしまいましたoTZ。残念です。2個目の引数を工夫すれば何とかできるのかもしれませんが。。

    SQLで無理にテーブルをバインドしないで、VBでレコードセットを操作したほうが早そうですね。
    場合によってはDataSetも使えそうですし。
  • id:cx20
    お礼が遅くなりました。ポイント送信ありがとうございます。

    > SQLで無理にテーブルをバインドしないで、VBでレコードセットを操作したほうが早そうですね。
    もっと簡単な方法があれば良いんですけどね。
    無い場合は、自分で作るしかなさそうです・・・。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません