1

私は2つのデータベースサーバーを持っています。1つはmysql、もう1つはdb2で、両方とも異なるマシンで実行されています.結合を使用して両方のデータベースからテーブルからレコードをフェッチしたい.リンクサーバーの概念について研究しましたが、問題は例が見つからないことです. db2でリンクサーバーを作成するため(私が見つけることができるのはSSMSです。つまり、リンクサーバーを作成するためにSql Server Mannagement Studioを使用します)が、私のケースはmysqlとdb2であり、それらのいずれかにリンクサーバーを作成する必要があります/その逆。

どうすればこれを達成できるか、いくつかの助けを提案してください。

前もって感謝します!

4

2 に答える 2

1

DB2 には、フェデレーション(情報統合の一部)と呼ばれる機能があり、外部リソースを DB2 (ラッパーとニックネーム) に提示できます。これらの外部リソースを DB2 からクエリすることができ、異なるソース間の結合を行うこともできます (他の DB2 データベース、Informix | MSSQL サーバー | Oracle | MySQL データベース、フラット ファイルなど)。外部リソースをクエリするには、この機能が必要です。特別なライセンス。代わりに、他の DB2 または informix データベースにクエリを実行する場合、この機能は無料で含まれているため、追加のライセンスは必要ありません (これらは IBM データベースです)。

順番に、テーブル関数というオプションがあります。これらの関数は、呼び出されるとテーブルを返し、返されたデータを他のテーブルと結合できます。これらの関数は、SQL PL (IBM プロシージャー言語)、C、または Java で開発できます。

この 2 番目のオプションを使用すると、Java で表関数を作成して、MySQL テーブルを照会し、データを DB2 に返すことができます。Twitter で「トピック」を照会し、そのデータを DB2 に返す方法の例を作成しました。ほぼ同じことを行う必要がありますが、Twitter にクエリを実行する代わりに、他のデータベースを構成します。 http://angocadb2.blogspot.fr/2012/02/accediendo-tweeter-desde-db2-table.html

于 2013-01-22T16:49:29.947 に答える
0

@AngocAそれは機能しませんが、あなたの提案に感謝します。

長い検索の後、私自身が上記の自己投稿に対する答えを思いつき、ここに投稿することを考えました。これは、リモートの2つの異なるデータベースサーバーからデータをフェッチする必要があるシナリオの組み合わせの場合に他の人に役立つためです。 /local 本質的に、およびリンクサーバーの概念が失敗した場合。

Unity Jdbc と呼ばれるサードパーティ製の jar を使用する場合があります。これを Java コードで簡単な方法で使用して、ドライバーをロードし、古い jdbc と同じように接続を取得します。

1) thisClass.forName("unity.jdbc.UnityDriver"); のようなドライバーをロードします。2) この DriverManager.getConnection(jdbc:unity://test/xspec/mysqldb2.xml); のような接続を取得します。3) レコードを取得 (DDL/DML) 4) 接続を閉じる

Unity Jdbc http://www.unityjdbc.com/にアクセスできます。

コードでこの jdbc を使用して、要件の目的のデータソースの定義を含む xml ベースのファイルを実際にロードします。

すべてが設定されると、2 つの異なるリモート データベースの 2 つの異なるテーブルから簡単にクエリを作成できます。構文: dbname.tablename.fieldname

さらに、外部の実際の接続を閉じた後に作成された内部接続を閉じるための xml 構成をさらに処理する必要はありません。

問題がある場合は、元に戻します。

于 2013-01-29T07:25:18.063 に答える