Я пытаюсь создать отдельный поисковый сайт (site4 с использованием database4), который обновляется каждый час из 3 разных сайтов каждый из которых имеет свою собственную базу данных. Я хочу объединить данные из базы данных1, database2 и database3 в базу данных4.Как объединить 3 таблицы базы данных образуют 3 различных баз данных в базу данных 4
Я также хочу удалить дубликаты во время объединения, поэтому мне сказали использовать функцию UNION UNION.
На том же сервере, у меня есть 4 отдельные веб-сайты с каждого сайта, имеющие свою собственную базу данных MySQL:
site1 -> Database1, 1 таблица, 16 полей
site2 -> database2, 1 стол, 16 полей
site3 -> database3, 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