2010-11-26 12 views
1

私は別のサーバーに2種類のデータベースを持っています。私は別のDBに挿入するデータのためのいくつかのクエリを持って、その横に異なる2つのデータベース間の接続

//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()); 

:以下のスクリプトは、DB接続することです。このクエリは上記のような条件のために使用することができます

//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"; 

かどうか、 2つの異なるタイプのDBを持っていますか?もしそうなら、どの部分を変更する必要がありますか?


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

答えて

0

は、データベース・システムは、「データベース・リンク」機能をサポートしている可能性があります。

これが利用できる場合は、mysqlをFirebirdにリンクするか、逆もまた同様で、そのいずれかからスクリプトを実行します。

+0

どのように?どのような例ですか? – klox

+0

dblinkを使用すると、リモートデータベースを現在のデータベースと同じように操作できます。これはオピニオンではうまく機能します。 MySQLはそれをサポートしていません。 Firefoxがそうしているかどうかはわかりません。 – Massimog

関連する問題