Conectarse a varias bases de datos en Drupal
Drupal nos permite de manera sencilla y elegante la conexión a distintas bases de datos dentro del mismo sitio. Esto ocurre cuando por ejemplo queremos realizar una consulta sobre una tabla que no pertenece a la base de datos por defecto del sitio.
Para poder realizar esto habrá que transformar la variable $db_url del archivo settings.php en un array de la forma:
$db_url['default'] = 'mysql://drupal:drupal@localhost/drupal';
$db_url['bd1'] = 'mysql://usuario:contraseña@localhost/basededatos1';
$db_url['bd2'] = 'mysql://usuario:contraseña@localhost/basededatos2';
Donde $db_url['default'] guarda los parametros de configuracion de la base de datos de la instalacion de nuestro sitio. Podemos especificar tantas bases de datos como queramos. Ojo tienen que ser del mismo tipo, esto es todas tienen que ser MySql o todas Postgre, pero no una mezcla.
Para consultar otra base de datos se hará de la siguiente manera:
db_set_active('bd1');
db_query('SELECT * FROM tabla_en_bd1');
//Volvemos a la base de datos por defecto.
db_set_active('default');
Hay que asegurarse siempre de volver a activar la base de datos por defeto antes de volver a hacer otras llamadas a funciones de Drupal, de lo contrario apereceran errores de tablas no encontradas.