2010-11-26 3 views
1

У меня есть два типа базы данных на разных серверах. А ниже сценарий, чтобы сделать подключение к БД:соединение между двумя разными базами данных

//DB 1 
define("DBNAME","xx.xxx.xx.xxx:D:\DATABASE\OCS DATA.FDB"); 
define("DBUSER","USER"); 
define("DBPASS","USER"); 
$dbh = ibase_connect(DBNAME,DBUSER,DBPASS) or die(_ERROR15.": ".ibase_errmsg()); 

//DB 2 
$dbc=mysql_connect(_SRV, _ACCID, _PWD) or die(_ERROR15.": ".mysql_error()); 
mysql_select_db("qdbase") or die(_ERROR17.": ".mysql_error()); 

рядом, что у меня есть некоторый запрос для данных вставки в другую БД: может

//if structure of the both tables are same then... 
$sql = "insert into database1.member select * from database2.member"; 

//if structure of both tables are not same then 
$sql = "Insert into database1.member select columnname1,columnname2 ". 
     "from database2.member"; 

ли этот запрос будет использовать для условия, как и выше, которые имеют два разных типа БД? если это так, какая часть должна быть изменена?


while ($ibase_row = ibase_fetch_assoc($rResult)){ 
    $ins = array(); 
    foreach ($ibase_row as $col => $val){ 
    $ins[$col] = mysql_real_escape_string($val); 
    } 

    $mysql_insert = "INSERT INTO qdbase.table SET ".implode(',', $ins); 
    $res = mysql_query($mysql_insert, $dbc) or die(); 
} 
+0

Вы можете использовать слой абстракции базы данных, такой как Zend_Db, это часть [Zend Framework] (http://www.zendframework.com). – Phliplip 2011-04-26 07:01:17

ответ

0

Существует вероятность того, что системы баз данных поддерживают "DBLink" функцию.

Если это доступно, вы можете связать mysql с Firebird или наоборот и запустить сценарий из одного из них.

+0

нравится как? любой пример? – klox 2010-11-26 09:06:10

Смежные вопросы