【发布时间】:2010-10-20 20:08:12
【问题描述】:
我在 drupal 下有一个站点(使用 mysql),但需要它从外部 sql 数据库读取并进行查询/报告,也许使用 views2?
有可能吗?我一直在寻找一种解决方案,从外部数据库读取(而不是导入,它的数千个条目......)几个小时,但不确定它是否可能。
【问题讨论】:
-
也许可以编写自己的自定义模块
-
可悲的是,我还不太擅长开发自己的模块
我在 drupal 下有一个站点(使用 mysql),但需要它从外部 sql 数据库读取并进行查询/报告,也许使用 views2?
有可能吗?我一直在寻找一种解决方案,从外部数据库读取(而不是导入,它的数千个条目......)几个小时,但不确定它是否可能。
【问题讨论】:
Drupal 可以访问外部数据库,假设它们是 Drupal 支持的类型之一。
我会推荐你到这个手册页面:How to connect to multiple databases within Drupal。
但是,要实际访问外部数据库中的数据,您需要编写自定义代码,可能在自定义模块中。本质上,您需要执行以下操作:
// Set Database API to use the other database.
db_set_active('external_db');
// Query the database.
db_query("SELECT * FROM {your_table} WHERE condition = 'value'");
// Set the Database API back to the default db.
db_set_active('default');
本质上,将数据库指向外部数据库,进行读写,然后切换回来。如果您忘记切换回来,Drupal 将崩溃,因为它的核心功能将尝试使用非 Drupal 数据库。
【讨论】:
可以在settings.php 中定义多个数据库连接,并使用db_set_active 选择要使用的数据库。
如果您想对视图执行此操作,您可能需要做一些额外的工作并在将活动数据库设置为外部数据库后嵌入视图。
【讨论】:
无需编写代码,您应该能够使用Table Wizard module 创建辅助数据库的视图。但是,考虑到 Drupal 6 处理其数据库抽象的方式,这将要求辅助数据库与主 Drupal 数据库的类型相同(例如,两者都是 MySQL 或都是 Postgresql)。
【讨论】: