異なるサーバのDBデータを結合する方法
- 異なるサーバに載っているDBのデータを結合する方法について説明します。
- 両者の主キーのみを使用してデータのつながりを作る方法や、DBに何かを作らずにデータの結合をする方法についても検討しましょう。
- SQLplusやSQLクリエイトツールを使用してデータの結合を行い、DBを汚さない方法についても解説します。
- ベストアンサー
異なるサーバのDBデータ同士を結合するには?
全く違うサーバに載っているDBのデータ同士を結合するいい手段はないでしょうか? DBは両者ともOracleですが9と10という違いがあります。 SERVER1に載っているDBは商品管理のためのものです。主キーは「品ID」です。 SVR2に載っているDBは、保証期間の管理をするためのものです。主キーは「品ID&メーカーID」です。 唯一データのつながりを作れそうなのは両者の主キーのみです。 あとのデータには何にもつながりはありません。 どちらかのサーバに片方のDBのテーブルを作るとかビューを作ればいいかと思いましたが、その方法についてはNGとされています。 (とりあえずその方法でやる場合できますでしょうか???) DBに何かを作ることなくデータの結合をさせれないでしょうか? SQLplusなりSQLクリエイトツールなりどんな方法でもDB自体汚さない限り問題はありません。
- mr-r00
- お礼率93% (480/516)
- Oracle
- 回答数3
- ありがとう数3
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
「CREATE DATABASE LINK」でデータベースリンクを作成すれば可能だと思います サーバー1上で 「CREATE DATABASE LINK link2 CONNECT TO ユーザー名 IDENTIFIED BY password USING 'サービス名' 」 を実行しデータベースリンクを作成し http://download.oracle.com/docs/cd/E16338_01/server.112/b56299/statements_5005.htm FROM テーブル名 INNER JOIN テーブル名2@link2 on テーブル名.項目名 = テーブル名2@link2.項目名 でJOINできます。
その他の回答 (2)
- Siegrune
- ベストアンサー率35% (316/895)
DBLinkもダメってことなら、Accessで両方のテーブルのリンクテーブル作って AccessのSQLを発行すればSQLのみで結合できますけどね。 データ量によってはレスポンス悪いしOracleのサーバに負荷かかるし お勧めではありませんけど。 プログラムで、両方のテーブルの全レコード取得して、マッチングプログラム作るよりはまし。 ということで一応書いておきます。
お礼
ありがとうございます 大変参考になりました!
- 3rd_001
- ベストアンサー率66% (115/174)
>どちらかのサーバに片方のDBのテーブルを作るとかビューを作ればいいかと思いましたが、 >その方法についてはNGとされています。 >DBに何かを作ることなくデータの結合をさせれないでしょうか? これってDB上になにも作成してはいけないということでしょうか? データベースリンクも作成不可ですか? そうなるとSQLのみでは不可能です。 アプリケーションで、双方のDBにアクセスしてテーブルの内容を取得し、 アプリケーション上で結合するロジックを書くしかないでしょう。
お礼
ありがとうございます 大変参考になりました!
関連するQ&A
- 2つの異なるサーバーのDBを扱う
現在、Visual Studio 2005(BASIC) を使って、Aのサーバー(IIS)に画像データを貯めるWebプログラムを作成しようとしています。この管理にはMDB形式のDBを使用する予定です。 ところが、このサービスを利用できるユーザーの管理は、Bのサーバー(UNIX MySQL)のDBで管理されています。 このように、Aのサーバーで動作するWebプログラムからBのサーバーのDBに接続することは可能なのでしょうか?
- ベストアンサー
- Microsoft ASP
- APサーバとDBサーバのトランザクション管理
下記の記事で「APサーバはデータベースのトランザクション管理を行う」という記述がありますが、それはDBサーバの役割ではないでしょうか? なにかAPサーバとDBサーバで管理の仕方が異なるのでしょうか? もっというと、この2サーバでDBから取り出したデータの編集/加工方法は どのように変わるのでしょうか? https://thinkit.co.jp/free/tech/6/1/1.html
- ベストアンサー
- その他(データベース)
- 異なるサーバーのテーブルを結合する方法
SSIS初心者です。 SSISで異なるサーバーのテーブルを結合する方法を教えて頂きたいです。 環境のイメージとしては サーバー1のテーブルAと サーバー2のテーブルBを結合して サーバー2のテーブルCに登録処理を行いたいです。 二つのDBはスキーマ名、ログインID、パスワードが全て異なります。 ご教示頂けましたら、助かります。 宜しくお願い致します。
- ベストアンサー
- SQL Server
- 主キーが文字型での結合
主キーが文字列型のカラムhoge_idがあります。 (hoge_idは英数字8文字とします) hoge_idで、他のテーブルに結合します。 また、Webからアクセスする必要があり、URLのパラメータで、 ?hoge_id=A1B2C3D4 の様に、主キーを渡す必要もあります。 文字列を主キーにする方法に慣れていないせいか、気持ち悪く感じます。 主キーを別途serial型のカラムidを作成し、 hoge_idには、ユニークキーで設定をし、 結合や、URLのパラメータは主キーのidを使う方法はあまり意味がないでしょうか。 アドバイスを頂けませんでしょうか。 よろしくお願い致します。
- ベストアンサー
- PostgreSQL
- 異なる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
- 結合について質問です
SQLite3データベースを使っています。 2つのテーブルt1とt2があり、t2はt1の重複する部分を担っています。 t2はt1に対し、NULLでもよい項目です。 t1には主キーのidと名前、 t2には主キーのidと、t1と結びつけるt1.id(外部キーにはしていません)と、 行ったことのある国の3つがあります。 山田花子さんはアメリカとイギリスに行ったことがあり、 山田太郎君はどこへも行ったことがないとします。 この時、行ったことのある国を1つ選ぶ処理をしたいのですが、 t1とt2を結合して、t1.idに対しグループ化(group by)を行った場合、 山田花子さんはアメリカへ行ったことがあります。 となります。 t2に山田太郎君の項目がない為、結合しても山田太郎君は取得できません。 もしt2に項目がなかった場合でも、 NULLとして取得したいのですがどうすればよいでしょうか? こういう表が欲しいです t1.id t1.名前 t2.国 1 山田花子 アメリカ 2 山田太郎 create table t1 (t1.id integer not null primary key, 名前 text not null) create table t2 (t2.id integer not null primary key, t1.id integer not null, 国 text not null) よろしくお願いします。
- ベストアンサー
- その他(データベース)
- ASPから異なる複数のDBサーバーに接続する方法
ASPの質問です。WEBサーバーと複数のDBサーバーがあります。 ADODB.Connectionでオラクルサーバーに接続し、データベースオブジェクトを作成しています。 別々のDBサーバーにあるテーブルを結合して利用したいのですが、ASPで可能でしょうか? 例えば"select * from A,B where A.ID=B.ID"というSQL文を実行する(AとBは別々のDBサーバーにある)。 とりあえず、代替案で検討しているのは片方のDBサーバーにデータベースリンクで他方のDBサーバーのVIEWを作ろうかと思っています。できればASPで解決したいのですが、よろしく御願いします。
- 締切済み
- Microsoft ASP
- DBサーバーのOracleからのデータ取得について
WEBサーバー(Linux)とDBサーバー(WindowsServer2003)が分かれている環境で、WEBサーバーのPHPからoci8で、DBサーバーのOracleからデータ取得をしており、データ取得量?が多いとエラーとなってしまします。 SQL自体はOracle環境で実行して正常にデータ取得することは確認しているのですが、10万行程度のレコード数でもレスポンスの時点?でエラーとなります。 (レスポンスの情報が無いので、エラー内容が分からず、データ件数を絞ると抽出が出来ます) 解決方法をご存じの方や、PHPもしくはLinuxの設定で取得データサイズの設定方法について分かる方がおりましたら、ご教授ください。 宜しくお願い致します。
- ベストアンサー
- Oracle
- SQL Serverでのデータロードについて質問
SQL Server初心者です。 CSVファイルのデータをテーブルにロードするにあたり、以下のような事をするにはどんな方法があるのでしょうか? ケース1:CSVファイルのデータでテーブルを上書き ケース2:主キーが一致するレコードがテーブル内に存在する データはUPDATE,なければINSERT ケース1,2それぞれDB2でいうところのImportコマンドを使用した時のREPLACEモード及びINSERT_UPDATEモードのイメージです。 DB2のように簡単にはいかないものでしょうか。 よろしくお願いします。
- 締切済み
- SQL Server
お礼
ありがとうございます 大変参考になりました!