2016-06-18 22 views
0

我想從三個表具有相同名稱的多個數據庫導出的具體數據,並將它們導入到一個單一的數據庫SUPPORT_DATABASE,該表是XXX_usersXXX_usergroupsXXX-user_usergroup_map導出表到一個單一的數據庫

用戶id是所有表中的主鍵。

這裏有劇本我到目前爲止

的MySQL Export.php

<?php 
//ENTER THE RELEVANT INFO BELOW 
$mysqlDatabaseName ='db1'; 
$mysqlUserName ='db1owner'; 
$mysqlPassword ='Password'; 
$mysqlHostName ='db1.mywebhost.net'; 
$mysqlExportPath ='db1backup.sql'; 

//DONT EDIT BELOW THIS LINE 
//Export the database and output the status to the page 
$command='mysqldump --opt -h' .$mysqlHostName .' -u' .$mysqlUserName .' -p' .$mysqlPassword .' ' .$mysqlDatabaseName .' 
SELECT id, name, username, password, email FROM `xxx_users` WHERE `id` in (SELECT `user_id` FROM `xxx_user_usergroup_map` WHERE `group_id` = (SELECT `id`  FROM `xxx_usergroups` WHERE `title` = 'Administrator')); 
SELECT id, name, username, password, email FROM `xxx_users` WHERE `id` in (SELECT `user_id` FROM `xxx_user_usergroup_map` WHERE `group_id` = (SELECT `id` FROM `xxx_usergroups` WHERE `title` = 'Engineer')); 
> ~/' .$mysqlExportPath; 
exec($command,$output=array(),$worked); 
switch($worked){ 
case 0: 
echo 'Database <b>' .$mysqlDatabaseName .'</b> successfully exported to <b>~/' .$mysqlExportPath .'</b>'; 
break; 
case 1: 
echo 'There was a warning during the export of <b>' .$mysqlDatabaseName .'</b> to <b>~/' .$mysqlExportPath .'</b>'; 
break; 
case 2: 
echo 'There was an error during export. Please check your values:<br/><br/><table><tr><td>MySQL Database Name:</td><td><b>' .$mysqlDatabaseName .'</b></td></tr><tr><td>MySQL User Name:</td><td><b>' .$mysqlUserName .'</b></td></tr><tr><td>MySQL Password:</td><td><b>NOTSHOWN </b></td></tr><tr><td>MySQL Host Name:</td><td><b>' .$mysqlHostName .'</b></td></tr></table>'; 
break; 
} 
?> 

的MySQL Import.php

$mysqlDatabaseName ='db2'; 
$mysqlUserName ='db2owner'; 
$mysqlPassword ='Password'; 
$mysqlHostName ='db2.mywebhost.net'; 
$mysqlImportFilename ='db1backup.sql'; 

//DONT EDIT BELOW THIS LINE 
//Export the database and output the status to the page 
$command='mysql -h' .$mysqlHostName .' -u' .$mysqlUserName .' -p' .$mysqlPassword .' ' .$mysqlDatabaseName .' < ' .$mysqlImportFilename; 
exec($command,$output=array(),$worked); 
switch($worked){ 
case 0: 
echo 'Import file <b>' .$mysqlImportFilename .'</b> successfully imported to database <b>' .$mysqlDatabaseName .'</b>'; 
break; 
case 1: 
echo 'There was an error during import. Please make sure the import file is saved in the same folder as this script and check your values:<br/><br/><table><tr><td>MySQL Database Name:</td><td><b>' .$mysqlDatabaseName .'</b></td></tr><tr><td>MySQL User Name:</td><td><b>' .$mysqlUserName .'</b></td></tr><tr><td>MySQL Password:</td><td><b>NOTSHOWN</b></td></tr><tr><td>MySQL Host Name:</td><td><b>' .$mysqlHostName .'</b></td></tr><tr><td>MySQL Import Filename:</td><td><b>' .$mysqlImportFilename .'</b></td></tr></table>'; 
break; 
} 
?> 

表結構

XXX_user 
user_id, name, username, email, password 
300, john smtih, jsmith, [email protected], [email protected] 

XXX_usergroups 
group_id, type 
8, administrator 

XXX_user_group_map 
user_id, group_id 
300, 8 

什麼我以爲我能做到,是一旦數據在這裏MODIFY用戶group_idXXX-user_usergroup_mapSUPPORT_DATABASE中的用戶組相匹配,則將所有三個數據庫中使用MySQL-import.php的數據庫導入到輔助數據庫中,並使用MySQL-Export.php從三個數據庫導出數據並將數據庫存儲在服務器上

在這一點上我有點卡住,作爲進口從多個數據庫中的用戶,用戶可以共享同一個user_id,所以我不能確定做什麼,在哪裏以及如何可以改變user_id

它沒有重要性的user_id是什麼,一旦它在SUPPORT_DATABASE

任何機構可以建議一些事請。

+0

在所有三個數據庫中XXX_usergroups是否相同? –

+0

不,在'XXX_usergroup'中的'group_id'將在所有三個數據庫中有所不同,但是,一旦我導入數據,我有一個SQL腳本將會改變它們,我只是不知道該怎麼處理'user_id' – user2513528

+0

然後,只需刪除user_id並讓SUPPORT_DATABASE自動爲您添加user_id –

回答

0

這裏做這件事,一步步

  1. 通過使用此查詢

SELECT u.name, u.username, u.email, u.password, g2.type FROM "XXX_user" u, "XXX_user_group_map" g, "XXX_usergroups" g2 WHERE g.user_id = u.user_id AND g.group_id = g2.group_id

在此查詢傾倒了每一個數據庫,你會得到用戶組類型作爲字符串,您可以用它來匹配您的SUPPORT_DATABASE組ID

  1. 現在編寫一個腳本將sql導入到SUPPORT_DATABASE,將SUPPORT_DATABASE設置爲在user_id上具有AUTO INCREMENT並且在電子郵件上具有唯一性。
相關問題