質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

Q&A

解決済

3回答

6135閲覧

MySQLとSQLServerの結合

HelloWorld2

総合スコア32

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

0グッド

0クリップ

投稿2018/08/20 07:07

編集2018/08/22 07:06

2つのサーバがあります。
サーバAではMySQLを使用しています。
サーバBではSQLServerを使用しております。
サーバAのaテーブルと、サーバBのbテーブルを結合し、データを取得したいです。

1.上記内容は可能でしょうか。 2.どのような方法・設定で行うのでしょうか。

追記
MySQLとSQLServerで結合してみたのですが、結合できません(innerjoinだとレコードが0件、エラーは表示されない)

  • 試したこと

・trimを用いて空白の削除
・substringを用いて該当文字列部分のみで比較

他の可能性としては、文字コードも関係あるかもしれないと思っていますが、(まだ試せてないです)
考えうる点他にありますでしょうか。

MySQL⇒UTF8 SQLServer⇒照合順序が「Japanese_CI_AS」であるため、Shift-JIS?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2018/08/20 07:28 編集

なぜそのようなことをするのでしょうか。「不可」の場合に別の案は余地があるのでしょうか。そして、どのように結合したいのでしょうか。この内容だけでは要件も曖昧で、前提や背景も自分で調べたことも試したことも書かれていない本当にただの丸投げため「無理です」以外の回答が得られないように思います
HelloWorld2

2018/08/20 08:28

パッケージソフト内で自動取得しているデータがMySQLに存在しています。(参照可能) また、SQLServer内にユーザ側で作成・メンテナンスしているテーブルが存在しています。それらをパッケージソフト内で結合できる"かも"しれないのですが、そもそもMySQLとSQLServerを結合することは可能なのか、といった旨の質問となります。不可の場合は、より根本的な見直しをする必要がありますが、結合可能であれば、無理にでも実装したいところです。どのように結合したいか、に関しては、1テーブル同士の単純なleft joinです。
alg

2018/08/22 13:39

追記に「MySQLとSQLServerで結合してみたのですが」とありますが、(kaz.Suenagaさんの回答にあるように)SQL Server側にリンクサーバーを設定した結果そこまではできた、ということでしょうか?
guest

回答3

0

kaz.Suenagaさんの回答が詳しいですが、もしかしたら基本的な部分を先に押さえた方が良いかも知れないので少し補足しますね。

MySQLとSQL Serverに限らず、「別のサーバーやPCで動いているデータベースの中のテーブル同士を結合して情報を扱う」ってのは「自分の家の冷蔵庫とお隣の家の冷蔵庫の中身を一緒にして料理したい」くらいのイメージです。一言で言うと「普通はできない」です。これはデータベース製品やメーカーが同じでも同様です。別サーバー、PC上で動くデータベース同士は互いに「相手の中は覗けない」ようになっています。

それを実現するには、何かしら特別な仕掛けが必要で、その1つが「リンクサーバー機能」です(SQL Serverの場合の機能です)。

大前提として、異なるDB同士を結合する、ってのはこれくらいの障壁のある行為だ、という事実があります。そしてまずは「簡単ではない」ということを理解していただき、その上で「DB同士を互いに参照して利用しあう為の機能や設定は無いだろうか?」とか「この機能で互いに結合しようとしているのだけれど上手くいかない」といった質問まで踏み込んで来られれば、おそらく誰か助け船を出してくれるのでは無いでしょうか?

投稿2018/08/22 12:10

backyard

総合スコア534

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

HelloWorld2

2018/08/31 03:26 編集

他のマシンのローカル環境のSQLSeverとMySQLに同じデータを登録して、同様に結合したらデータが表示される状態です。 異なるサーバーに存在するMySQL同士なら結合できました。 以上のことから、異なるサーバーに存在するSQLServerとMySQLの結合は可能で、何らかの原因によって、結合処理のみがうまくいってないと考えております。 したがって、現在の問題は、SQLServerとMySQLを結合する際に考慮すべきことは何でしょうか、ということです。
guest

0

バージョンにもよるかもしれませんし最近実際にやってみたことがないので詳細は調べていただければと思いますが、 SQL Server の機能にリンクサーバという外部DBへの接続を作る機能があります。

リンクサーバの接続先にはOLE DBプロバイダがあるものであれば指定できる(最悪ODBCでいい)ので、mysql への接続も作れるはずです。

それを利用すると SQL Server 内でクエリを発行することで複数DBをまたがったJOINなどが可能です。

こちらのページなどが参考になるかと思います。

(追記)

こちらのページが手順、SQLの発行方法など説明があってわかりやすいかもしれません。

投稿2018/08/20 07:30

編集2018/08/20 07:38
kaz.Suenaga

総合スコア2037

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自己解決

投稿2018/09/12 03:10

HelloWorld2

総合スコア32

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問