• ベストアンサー

異なるDB(Oracl と MySQL)の結合は可能でしょうか?

JavaというかDBに関しての質問です。 仕事で元々 Access で作られていたアプリをWebアプリで作り直す事になりました。 元々の Access バージョンでは、 外部の Oracl への「リンクテーブル」を設け mdb のテーブルと結合させて データを表示するというような事をしています。 この度作成するWebアプリ版(Java)では、 元々の mdb のデータを新たに建てる MySQL へインポートし 外部の Oracl と MySQL のテーブルを結合しデータを読込み画面へ表示するというような事を実現したいです。 そもそも異なるDBを結合する事は可能なのでしょうか? 同期の問題があるので出来ればどちらかのDBにもう一方のDBのデータをコピーするというような事は避けたいです。 なお私の方で既に試した方法としてそれぞれのDB(テーブル)をJDBCで別々に読込んでクエリの結果セットをモデル化したJavaのオブジェクトに格納し その後、結合の条件を指定しマッピングするという実装を試してみましたがマッピングに非常に時間がかかり使い物になりませんでした。 ※やはりSQLには遠く及ばなそうです。 MySQL で Access のリンクテーブルのような便利機能はあるのでしょうか? Oracl はお客様が管理されており手を加えることが出来ません。 またデータベース側で出来ないとなればアプリ(Java)側で何とかしないとなりませんが Java で良い解決策はありますでしょうか? まとまりの無い質問となってしまいましたがどうぞ宜しくお願いします。

  • Java
  • 回答数2
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
  • 486HA
  • ベストアンサー率45% (1013/2247)
回答No.1

「MySQL Connector/ODBC」というものがあります。 DB間の接続にはODBCを利用するのが簡単です。 名の通ったDBであれば対応するODBCドライバーも提供されているものと思います。 http://dev.mysql.com/doc/refman/5.1/ja/myodbc-connector.html  また「黒猫 SQL Studio」も応用できるかもしれません。 http://kuronekosoft.ewinds.net/

pvge2rd37
質問者

お礼

貴重な情報ありがとうございます。 「黒猫 SQL Studio」このアプリは初めて知りました。 便利そうですね! 「MySQL Connector/ODBC」というものがあるんですね。 AccessのリンクテーブルもODBC経由なのでmdbとの結合が可能なんでしょうね。 いろいろ調べてみます。問題解決に繋がるかもしれません。 ありがとうございました。

その他の回答 (1)

  • kotoby2003
  • ベストアンサー率15% (280/1755)
回答No.2

Oracleからであれば、データベースリンクを使えばできたような気がします。 逆に、SQLServerからも同様の機能(リンクサーバー?)があると思います。 下記を参照してみてください。 http://q.hatena.ne.jp/1162546828

pvge2rd37
質問者

お礼

貴重な情報をありがとうございます。 SQLServerは余り触ったことがありませんでしたが、 やはり有名どこのRDBにはODBC経由のリンク機能があるんですね。 MySQLにも「MySQL Connector/ODBC」というものがあるそうです。 設定時(リンク時)にエラーとかが出そうな匂いがしますが 調査して試してみたいと思います。 ありがとうございました。

関連するQ&A

  • 違うDB間のテーブル結合について

    宜しくお願い致します。 同じDB内にあるテーブル同士はleft join等で結合できますが、違うDB間にあるテーブルを結合する事は可能でしょうか?

    • ベストアンサー
    • MySQL
  • Access テーブルの結合

    Access2002で同じ*.MDB内にある同じフウールド名、データ型を持つ複数のテーブルを結合し一つのテーブルにする方法を教えて下さい。

  • PHPからMySQL・異なるDBにコピー

    PHPからMySQL・異なるDBに接続し同じ構造のテーブルのデータをコピーすることは可能ですか? 以下を実行するとクエリが実行されず「コピーできません」が表示されてしまいます。 どのようにすればコピーできるか教えてください。 $connect1 = mysql_connect("localhost", "user1", "pass1") ; mysql_select_db("db1", $connect1); //db1内にtable1 $connect2 = mysql_connect("localhost", "user2", "pass2") ; mysql_select_db("db2", $connect2); //db2.内にtable2 $sql = "INSERT INTO `db1` . `table1` SELECT * FROM `db2` .`table2`;"; $result = mysql_query($sql, $connect1)or die("コピーできません"); //$result内「$connect1」でも「$connect2」結果は同じです。 //table1とtable2の構造は同じです。

    • ベストアンサー
    • PHP
  • MySQL、Accessを利用したDBの設計

    会社で現在の作業をシステム化し、将来的にはマーケティング処理も行う目的でMySQLを導入し、インタフェースをAccessにしてDB設計する方針になり、多少経験があるわたしが担当することになってしまいました。今、必死でMySQLを調べているのですが、基本的な理解ができていません。助けてください!! 1.MySQLとAccessを使うには会わせてODBC、MDACのインストールも必要のようですが、サーバ/クライアントのどちらに載せればいいのですか?他に必要なソフト(ミドル)ウェアはありますか? 2.MySQLの起動とありますが、サーバが立ち上がっている間自動で動作しているものではないのですか?(DBにアクセスする前にサーバに行ってMySQLを起動し、終わったら終了させるということですか?) 3.サーバ上のDBをクライアント側のAccessで操作するには、DBのアクセス権等何をどう設定する必要がありますか? 4.何十万件ものデータ処理をAccessで耐えられますか? 5.現在Access上にあるデータはテーブル毎にODBCにエクスポートするようですがクエリ(SQLソース)、リレーションシップ等はどう移植すればいいのですか?移植で注意すること(文字コード等)とかありますか? Access2002、MySQL3.23.51、phpMyAdmin2.2.6、WindowsXPを使ってます。 MySQL解説書には上記のようなことには触れていないのでわけがわかりません。ながくてばかばかしい質問かもしれませんが教えてください。よろしくお願いします。

  • 別サーバーのDB同士を結合することは可能でしょうか?

    お世話になっております。 MYSQL5を利用しております。 この度、別サーバーのDB同士を結合することは可能かどうか、もし可能であればサンプルを頂けないかと思い、投稿させて頂きました。 [現在使用しているDBサーバ] kagoyaサーバーのDB(MYSQL) sakuraサーバーのDB(MYSQL) [上記DBを結合させるコードを記述したファイルを置くサーバー] kagoyaサーバー 現在kagoyaサーバーにてそれぞれのDBからそれぞれのDBにアクセスして値を取得するところまでは出来ております。二回SQLを書いているのですが、これを一度でどうしても済ませたいと思い、JOINを使用して結合できないか調べてみました。 http://q.hatena.ne.jp/1178781253 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1113186486?fr=rcmd_chie_detail 上記URLのように、同サーバー内なら可能のようですが、実際にやってみたのですが、「mysql_query($sql, $db);」の第二引数でどちらのDBに接続すればいいかわからず、両方試してみましたがダメでした。(自分が書いたソースを破棄してしまったためうろ覚えなのですが、返ってきたresource はresource #13でした。) 結局できるのかできないのかわからないままの状態です・・・。もしわかる方がいましたら、どうかご教授下さい!よろしくお願い致します!

  • MySQL区切った文字列で外部結合はできない?

    MySQLの外部結合について教えてください 「結合の対象となっているカラムの値が一致」は必須なのでしょうか? ■やりたいこと ・Aテーブルaカラム内にある「デリミタの先頭文字列」を抽出して、Bテーブルのidカラムと結合したい ■最終的にやりたいこと ・上記一致条件で、両テーブルデータをSELECTしたい ■試したこと ・「SELECT SUBSTRING_INDEX」で「デリミタの先頭文字列」を抽出できたのですが、そこで行き詰まりました ■質問 ・そもそもやろうとしていることが無謀なのでしょうか? ・テーブル構成を見直した方が良いのでしょうか?

    • ベストアンサー
    • MySQL
  • MySQL/DBサーバって、MySQL/DBクライアントみたいなものりますか?

    Linux+Apache+MySQLでサイト構築を検討しています。 MySQL/DBって、ORACLE8で言うところの、 いわゆる「Net8クライアント」のようなものってあります? 実は、今まで、NT+MS-SQLServer7でサイト構築してたのですが、 Linuxで再構築することとなっちゃいました。 で、MS-SQLServer7だったら、クライアントPCから、 GUIを使って、データベースのデータを簡単に変更することができます。 しかし、LinuxではMS-SQLServerは使えないので、じゃぁ、ORACLEって手もありますね。 そこで、ORACLEだったら、Net8があるので、多分、 上記のような使い方もできると思うのですが、 ORACLEは、導入コストが高すぎるので、却下されてしまいました。 で、Linux+MySQLにしようかと・・・。 しかし、サーバ機にLinux+MySQL/DBを構築するのはいいのですが、 Windowsなどのクライアントから、ORACLEでいうNet8でODBCのような接続で、 Microsoft-Accessなどを使って、データベースのデータを編集させたいんです。 よろしくお願いします!

  • JAVA→MySQL仕様で絵文字を登録したい。

    JAVAを使用して、絵文字をMySQLでDB登録したいのですが、 どのようにマッピングしていけば良いのかさっぱりわかりません。どなたか、おわかりになる方教えて頂けるとたすかります。 環境: Tomcat 5.5 Java\jre1.5.0_14

  • Access -> MySql

    AccessからMySqlに接続しようとしているのですが、なかなかうまくいきません。 ODBCでデータソースを作成するところまでは出来ているのですが (TestでもSuccess:connection was mode!とでています) Accessを起動し 「ファイル」->「外部データの取り込み」->「テーブルのリンク」を選択し出てきたダイアログの「ファイルの種類」でODBCデータベースを選択するのですが、「データソースの選択」ダイアログが出てきません。 何に問題があるのでしょうか? Access:Access2003 MySql:5.0.27 ODBC:Mysql Connecter/ODBC 3.51.17 DBサーバ、クライアントともにXPを使用しています。

  • 異なるサーバのDBデータ同士を結合するには?

    全く違うサーバに載っているDBのデータ同士を結合するいい手段はないでしょうか? DBは両者ともOracleですが9と10という違いがあります。 SERVER1に載っているDBは商品管理のためのものです。主キーは「品ID」です。 SVR2に載っているDBは、保証期間の管理をするためのものです。主キーは「品ID&メーカーID」です。 唯一データのつながりを作れそうなのは両者の主キーのみです。 あとのデータには何にもつながりはありません。 どちらかのサーバに片方のDBのテーブルを作るとかビューを作ればいいかと思いましたが、その方法についてはNGとされています。 (とりあえずその方法でやる場合できますでしょうか???) DBに何かを作ることなくデータの結合をさせれないでしょうか? SQLplusなりSQLクリエイトツールなりどんな方法でもDB自体汚さない限り問題はありません。

専門家に質問してみよう