- ベストアンサー
外部にあるMySQLのデータを取得したい。
外部にあるMySQLのデータを取得したい。 VB2005を使用して、レンタルサーバー(Linux)にあるMySQLのデータを取得したいと考えています。 ただ、レンタルサーバ上のポートが閉じているため、ODBC接続などは出来ません。 VBからMySQLへ接続する何か良い方法があればご教授下さい。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
> 漠然とした質問で申し訳ないんですが、どういう意味でしょうか? あらかじめSQL文を用意します。ここでは "hoge.sql" というファイルにしたとします。 SSHでログインしたら、"hoge.sql" をカレントにアップロードします。 そして、シェルから下記のようなコマンドを実行すれば、標準出力にSQLの結果が出力されます。 mysql --user=ログイン名 --password=パスワード < hoge.sql 細かいことは「MySQL リファレンスマニュアル」(http://dev.mysql.com/doc/refman/5.1/ja/index.html)をご覧下さい。
その他の回答 (4)
> SSHでログインした後、ODBC接続を試みたのですが そうではなく、MySQLに直接SQLを発行するのですよ。
お礼
すいません。。。 頭が悪いので、理解できません。。。 >MySQLに直接SQLを発行するのですよ。 漠然とした質問で申し訳ないんですが、どういう意味でしょうか? この辺りは調べているんですが、よく理解できないのです。 もしよろしければ、もう少し詳しく教えて頂けませんでしょうか? もしくは、参考になるサイトなど教えて頂けませんか? 本当に申し訳ありません。
- BellBell
- ベストアンサー率54% (327/598)
>ポートが閉じていても、サーバーサイド側のプログラムを外部から >起動かける事が出来るのでしょうか? そりゃ、すべてのポートが閉じていれば無理だわ。 もっとも、そんなサーバをレンタルする意味がないため、絶対に開いているポートがあるはず。 『PHPなどで』って書きましたよね。 HTTPサーバ上で動く、サーバーサイドスクリプトでって意味です。 ※厳密にはCGIでもいいし、スクリプトではなくC/C++でもいいけれど。 レンタルサーバって事だったので、どのレンタルサーバでも確実に開いているのは、HTTP、HTTPS、FTPそれぞれのポートでしょう。 FTPは目的には合わないと思うので、残るはHTTP、HTTPS。 それなら確実にどのレンタルサーバでも動かせると言えるでしょう。 ※MySQLだけは提供している(しかし外部からは接続できない)、サーバサイドプログラムが動かせないレンタルサーバなんてありえないですから。
お礼
素早い回答ありがとうございました。 頂いた回答を考慮して考えたいと思います。
- BellBell
- ベストアンサー率54% (327/598)
サーバサイドで動作する中間プログラムをPHPなどで作成します。 URLパラメータとして、データの対象情報(絞込み情報などを含む)を渡します。 URLパラメータを元にMySQLに問い合わせをして、XML形式でデータを返します。 ローカルのプログラムからは、通常のWebサイトに接続するような形でデータを要求します。 返ってきたXMLを解釈して、MySQLから(中間プログラムを経由して)データの取得完了です。 アップデートやインサートも同じように、サーバサイドプログラムに対してデータの追加・更新命令を、URLパラメータを利用して発行します。 上記のような手法は、一般的にはWebAPIと呼ばれますかね。 別に返すデータはXML形式でなくても、仕様さえ満足するのであればCSVでもいいですが。
お礼
回答ありがとうございます。 中間プログラムは、直接書き込み出来ない場合に考えてはいます。 1つ気になったのは、ポートが閉じていても、サーバーサイド側のプログラムを外部から 起動かける事が出来るのでしょうか? それが出来るのであれば、この方法も考えたいと思います。 今回はリアルタイムなデータのやりとりを望んでいますので、出来る事なら 直接書き込みたいと思っています。
TelnetまたはsshでリモートログインしてSQLを発行してはどうでしょう。
お礼
回答ありがとうございます。 この方法ってやはり出来るのですか? SSHでログインした後、ODBC接続を試みたのですが、「Can't connect MYSQL server ・・・」 と出てしまった為、出来ないのかと思っていました。 (SSH上ではMYSQLへの接続もSQLの発行も可能でした。) もし出来るのであれば、MYSQLで質問し直したいと思います。
お礼
回答が遅くなって申し訳ありません。 やってみたんですが、うまくいきませんでした。 とりあえず、SSHを使用し、他の方法で接続できるようになりました。 色々回答いただきありがとうございました。