iT邦幫忙

0

如何利用PHP把A資料庫Select到的資料Insert到B資料庫之中?

joe64 2010-01-20 11:50:2123888 瀏覽

利用select_db是可以切換資料庫,
但如果想要用一行sql語法就可以,把A資料庫Select到的資料Insert到B資料庫之中,
請問該如何做呀?
如:

Insert Into B database
Select * from A database
10
godstamp
iT邦新手 3 級 ‧ 2010-02-07 12:47:55
最佳解答

寫入的欄位可依序指定內容..

例如...
A資料庫的資料表A的欄位分別是 A1 A2 A3 A4 A5 A6 A7
B資料庫的資料表B的欄位分別是 B1 B2 B3
假設要把 資料表A的 A3 A6 A7 欄位內容分別撈到資料表B的 B1 B2 B3

可以這樣寫..
INSERT INTO B資料庫.資料表B SELECT A3,A6,A7 FROM A資料庫.資料表A WHERE 條件..

joe64 iT邦新手 4 級 ‧ 2010-02-08 10:00:17 檢舉

謝謝您的回履~~請問你怎麼處理多資料庫連線的問題?
因為從資料庫撈資料時需要設定與資料庫的連線,如下,
我的問題是,在query的時候,如何在php裡面設定兩個database的連線問題。

$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
mysql_close($link);

godstamp iT邦新手 3 級 ‧ 2010-02-11 21:06:55 檢舉

一般而言,兩個資料庫如果是建在同一台機器上,當連線完成後,就可以直接對兩個資料庫進行操作,只要語法上有明確的說明是對哪個資料庫的哪個資料表動作,就可以完成請求...
例如要把三個不同的 database 中的資料表合併查詢...
SELECT * FROM db_a.table_a LEFT JOIN db_b.table_b USING(id) LEFT JOIN db_c.table_c USING(id) WHERE id=1;
像這樣也是可行的...
所以連線的動作是對機器連線,然後資料庫再依照語法完成請求的動作..

除非你的資料庫分別建在不同的機器上,那就必須個別連線了..
個別連線的話..通常使用物件的方式會比較好處理..
已經很久沒使用 mysql_connect() 這一類 php 的 MySQL 函式庫了..
建議可以改用PDO (PHP Data Object)會更方便些..
直接到 PHP 原文官網搜尋 pdo 可以查看到很多相關說明和範例..

8
goodnight
iT邦研究生 4 級 ‧ 2010-01-21 09:50:26

insert into table_name (fields_name) select fields_name from table_name where 條件

有空請多利用孤狗或是奇摩打 insert into

joe64 iT邦新手 4 級 ‧ 2010-01-21 10:58:29 檢舉

To Goodnight,謝謝你的回應,
不過這樣可以把A資料庫撈到的資料insert 到B資料庫嗎?

8
my407sw
iT邦新手 5 級 ‧ 2010-01-23 17:08:55

insert into DbA.tablea select * from DBb.tableb

從B資料庫的tableb 資料表撈資料到 A資料庫的tablea 資料表
注意 欄位要相容

10
henryi
iT邦新手 5 級 ‧ 2010-02-10 14:19:32

<?php
// 定義資料庫相關變數
define('dbHost','localhost');
define('dbUser','root'); // 資料庫連線帳號
define('dbPass',''); // 資料庫連線密碼
define('dbName','sourceDB'); // 資料庫名稱

// 連結資料庫
$db = mysql_connect(dbHost,dbUser,dbPass) or die('Connect to database failed');
mysql_select_db(dbName,$db);

// 抓取並寫入資料
// test.login_log = 目的地資料庫.目的地資料表
// sourceDB.login_log = 來源資料庫.來源資料表
$insStr = 'insert into test.login_log select * from sourceDB.login_log';
$res = mysql_query($insStr,$db) or die("Action failed. Error = ".mysql_error());

我要發表回答

立即登入回答