web-dev-qa-db-ja.com

MySQLで実行されているDrupalサイトの外部MS SQLデータベーステーブルからデータにアクセスする方法

私は現在、教員がMS SQLデータベースを設定しているため、多くのMS SQLデータベースを使用する学術医療部門で働いています。

また、最近リリースしたDrupal 6 LAMP上のサイトは、.NETショップであるはずだったものからPHPおよびMySQLに移行することを目標にしています...オープンソースにしてください!

私の問題: external MS SQLデータベーステーブルからMySQLで実行されるDrupalにデータをフェッチします。より具体的には、この外部データで2 を表示し、サイトに動的に表示します。

これまでにわかったこと:

  • Drupal 4以降、人々はこの問題に取り組んできましたが、誰も所有していないため、安定した解決策はありません。
  • Drupalは、サイトごとに1つの type のdbドライバーしか実行できません。 MySQL/PostgreSQL/etc ...ドライバを持っている場合。
  • MS SQL そこにあるドライバー は安定しておらず、サイトがすでにMS SQLで実行されている場合にのみ問題を解決します。
  • スキーマモジュールに依存してテーブル定義を構築し、外部のMySQLデータへのアクセスを可能にする興味深いモジュールがあります。 ( テーブルウィザードデータAPI

今:たとえば、Data APIモジュールをプラグインを作成することで、私の目的にどのように使用できるかを調べます。

外部のMS SQLテーブルにアクセスする方法について私に役立つどんな考えでも非常にありがたいです。

5
JeroenEijkhof

質問で指摘したように、ビューは現在それを行うことができません。 DrupalのDBレイヤーに依存していますが、現在は別のDBエンジンをクエリできず、MS-SQLをサポートしていません。ビュー3(現在アルファ版)は プラグイン可能なクエリバックエンド を提供するため、PDO ODBCまたはMSに到達するための他の手段の上にバックエンドを書き込むことが可能でなければなりませんSQL DB。PHP=からのMS-SQL DBでのクエリは、おそらくパフォーマンスの問題になります。ビューへのキャッシュは、サーバーへの不要なクエリの繰り返しを避けるために必要です。

これを回避してビュー3に飛び込むのを避けるために、ビュー(2)を使用してDrupalのデータベース、または同じエンジン上の別のデータベースにクエリを実行できます。そして、必要なデータをこのデータベースにインポートするだけです。これは私が最近毎日少量のデータを更新するプロジェクトでやったことです。 PDO ODBCnixODBC および FreeTDS を使用)を使用して、MS SQL ServerデータベースからMySQLテーブルに定期的にデータをインポートしました。次に、テーブルは Views 'API を使用してビューに公開されました。 Dataモジュールもこの目的に使用できます。

別のオプションは、MS-SQLからデータをDrupalのノードとしてインポートすることです。 (CCKを使用して)必要なフィールドを含むカスタムコンテンツタイプを使用してノードとしてデータをインポートすると、Drupalのノードを活用するために、ビューの統合と既存のモジュールのトンを利用できます。

外部データをDrupal=にインポートする簡単なソリューションの1つは Feeds モジュールです。最初はRSSをインポートするFeed APIのリライトとしてビルドし、Atomフィード、フィードは実際にDrupalにデータをインポートするための強力なフレームワークです。プラグインとフックを介して簡単に拡張し、さまざまなデータソース、フォーマット、プロセッサをサポートできます。

5
Pierre Buyle

ビューを使用して外部MS SQLデータベースにアクセスするよりも、カスタムコードページやブロックを使用する方が簡単です。ビューを取得して外部データベースにアクセスするのは十分に難しいので、MS SQLデータベースにすると、難しいことだけが難しくなります。

今はビュークエリビルダーを使用していませんが、LIMITを含むクエリが作成されると確信しています。 IIRC MS SQLはクエリでLIMITを処理できないため、ビューがクエリを実行している間にデータベースを切り替えて、ワードの後で切り替える必要があるだけでなく、MS SQLデータベースを処理してDrupalは、MS SQLデータベースへのクエリ作成のサポートを追加します。

これはすべて不可能ではありませんが、代わりにデータをMySQLデータベースにインポートする方がはるかに簡単です。 Drupal MS SQLでの6つのパフォーマンスもあまり良くありません。

2
googletorp

最近も同じ質問をしている人のために:それのためのモジュールがあります、それは呼ばれています- Forena 。 MySQLデータベースのクエリ(更新ではない)に使用できます。

Forenaの詳細については、2種類のドキュメントを利用できます。

  • コミュニティのドキュメント
  • Forenaに付属のドキュメント。モジュールをインストールして有効にするとすぐにアクセスできます。現在のオンライン例については、 デモサイト を確認してください。

    • Forenaのドキュメント-「レポートドキュメント」のリンクを使用するか、相対リンク/ reports/helpにアクセスしてください。
    • Forenaサンプル-「レポートサンプル」のリンクを使用するか、相対リンク/ reports/samplesにアクセスします(これらのサンプルは完全に機能するため、少し実験してください) SVGグラフサンプルで利用可能なドリルダウンなど)。

最新の7.x-4.xバージョンには、レポートの作成(WYSIWYGレポートエディター)やSQLクエリの作成(クエリビルダー)のための驚くべき(私は思う)UIも含まれています。

質問のmysqlデータベースの一部のバリエーションを次に示します。

  1. MySQLデータベースの代わりにSQLiteを使用する:Forenaサンプルは実際には(Tiny)SQLiteデータベースを含めて出荷されます。 デモサイト で確認してください。そこに示されているデータは、SQLite形式のsampledbに含まれているデータです。
  2. Forenaには サポートされているデータベース接続 ...の完全なスイートが付属しています(My SQL、MS SQL、Oracle、Postgress、またはPDO準拠のバリエーションなど)。

Forenaを試してみるのに十分な理由はありますか?そうしている間は、あらゆるタイプのサポート/ドキュリクエストに発行キューを使用してください。

注意:私はForenaの共同メンテナです。

1
Pierre.Vriens

Drupal for windows は存在します。しかし、多くのモジュールがその上で機能するとは思えません。ただし、ランプとウィンドウの2つのサイトでテーマを共有できます。ランプからMS SQLに接続しようとして保存しましたdrupalインスタンス。

1
Jeremy French