0

プロジェクトに取り組んでいます PHP を使用して、1 つのデータベース サーバーから値を取得し、他のデータベース サーバーに保存するにはどうすればよいですか?

4

2 に答える 2

2

データベースが同じホスト上にあり、ユーザーが両方にアクセスできる場合、次のように簡単にデータを交換できます。

INSERT INTO database2.table1 (*fields*) 
SELECT *fields* FROM database1.table1

テーブル内のフィールドのリストでフィールドを置き換えます。このクエリはテーブル全体を取得するため、時間がかかる場合があることに注意してください。

データベースが異なるホスト上にある場合、またはその他の理由で 1 つの接続だけでは両方に接続できない場合は、次のようにします。

$dbh1 = mysql_connect($hostname, $username, $password); 
$dbh2 = mysql_connect($hostname, $username, $password, true); 
//the fourth parameter makes sure that a new link is opened as if the parameters are the same, php will grab the old connection instead of creating one.

mysql_select_db('database1', $dbh1);
mysql_select_db('database2', $dbh2);

次に、データベース 1 にクエリを実行するには、次のようにします。

mysql_query('select * from tablename', $dbh1);

データベース 2 の場合:

mysql_query('select * from tablename', $dbh2);

...またはPDOで...

$database1 = new PDO('mysql:dbname=database1name;host=127.0.0.1', 'username', 'password');
$database2 = new PDO('mysql:dbname=database2name;host=127.0.0.1', 'username', 'password');
$result1 = $database1->query("select * from tablename");
$result2 = $database2->query("select * from tablename");
于 2012-11-20T10:10:04.387 に答える
0

インサートセレクトの組み合わせで可能

次の例を検討してください。

 INSERT INTO tbl_temp2 (fld_id)
 SELECT tbl_temp1.fld_order_id
 FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100;
于 2012-11-20T10:03:49.707 に答える