我試圖創建一個單獨的搜索網站(使用database4site4)是從3個不同的網站各自有自己的數據庫每小時更新一次。我想將來自database1,database2和database3的數據合併到database4中。如何合併3分數據庫表形成3個不同的數據庫到數據庫中4
我也想在組合過程中刪除重複項,所以我被告知使用MySQL UNION函數。
在同一臺服務器我有4名具有自己的MySQL數據庫的每個網站單獨的網站:
站點1 - >數據庫1,1臺,16場
站點2 - > DATABASE2,1臺, 16個字段
site3 - >數據庫3,1臺,16個字段
site4 - > database4,1臺,16個字段(當前爲空)
所有4個數據庫具有相同的結構,其中每個數據庫只有1個包含16個字段的表。
在所有4個數據庫中,表名是相同的(Post_Data),並且所有16個字段是相同的。索引字段(字段11)被命名爲Post_Date。
隨着一些論壇的幫助,我能夠寫下面的PHP代碼,但它不起作用,我沒有得到錯誤。
你能看到下面的代碼有什麼問題,需要做些什麼來解決它?
在此先感謝。
<?php
// Website 1
$host1 = 'site1.com';
$database1 = 'data_1';
$username1 = 'user_1';
$password1 = 'pass_1';
$TableName1 = 'Post_Data';
// Website 2
$host2 = 'site2.com';
$database2 = 'data_2';
$username2 = 'user_2';
$password2 = 'pass_2';
$TableName2 = 'Post_Data';
// Website 3
$host3 = 'site3.com';
$database3 = 'data_3';
$username3 = 'user_3';
$password3 = 'pass_3';
$TableName3 = 'Post_Data';
// Website 4 - Search Database
$host4 = 'site4.com';
$database4 = 'data_4';
$username4 = 'user_4';
$password4 = 'pass_4';
$TableName4 = 'Post_Data';
// Connect to all 4 Databases
$connection1 = mysql_connect($host1, $username1, $password1) or die ('Cannot connect to the database because: ' . mysql_error());
$connection2 = mysql_connect($host2, $username2, $password2, true) or die ('Cannot connect to the database because: ' . mysql_error());
$connection3 = mysql_connect($host3, $username3, $password3, true) or die ('Cannot connect to the database because: ' . mysql_error());
$connection4 = mysql_connect($host3, $username4, $password4, true) or die ('Cannot connect to the database because: ' . mysql_error());
// Combine all 3 Databases into the Search Database #4
mysql_select_db ($database1,$connection1);
mysql_select_db ($database2,$connection2);
mysql_select_db ($database3,$connection3);
mysql_select_db ($database4,$connection4);
mysql_query("USE $database4");
mysql_query("CREATE TABLE temp AS
SELECT * FROM $database1.$TableName1
UNION
SELECT * FROM $database2.$TableName2
UNION
SELECT * FROM $database3.$TableName3
");
mysql_query("CREATE INDEX ix_post_date ON temp.Post_Date");
mysql_query("RENAME TABLE Post_Data TO backup, temp TO Post_Data");
// Close databases connections
mysql_close($connection1);
mysql_close($connection2);
mysql_close($connection3);
mysql_close($connection4);
// Finished
$date_time = date('m-d-Y H:i:s');
echo '<h1>Finished - '.$date_time.'</h1>';
?>
我加入了真正的參數數據庫的連接作爲鏈接說明你給了我並將檢查結果代碼添加到腳本中。該腳本仍然不起作用,並且檢查結果錯誤是:無效查詢:找不到文件:'./data_4/temp.frm'(errno:2)整個查詢: – Sammy