2017-02-13 60 views
0

很久以前,我创建了包含每个用户的数据库与表的应用程序,每个表只有1行。所以我有像user1,user2,...,user2800这样的表格。现在我知道这是一个可怕的想法,所以我试图为每个用户创建一张大桌子。我需要创建表从更多相同的表中创建一个大表

CREATE TABLE `users` (`user_id`, `col1`, `col2`, ...) 

从象表:

TABLE `user###` (`row_id`, `col1`, `col2`, ...) 

其中###是用户ID。

有没有什么好的方法如何做到这一点?

+0

Thse倍数用户表不具有相同的字段? – Veve

+0

@Veve每个表格都有相同的字段 –

+0

您可以使用类似PHP的任务来完成此任务吗? –

回答

1

由于所有用户表具有相同的字段,因此您只需创建唯一表,然后遍历所有用户表以检索其内容。

例如,使用PHP,它可能是这样的:

$sql = CREATE TABLE `users` (`user_id`, `col1`, `col2`, `col3`); 
$mysqli_query($link, $sql); 

$nbContacts = 2800; 
for($i = 1;$i <= $nbContacts; $i++) 
{ 
    $sql = 'INSERT INTO users(`user_id`, `col1`, `col2`, `col3`) SELECT `'.$i.'`, `col1`, `col2`, `col3` FROM `user'.$i.'`'; 
    $mysqli_query($link, $sql); 
} 
1

不要试图在sql中这样做,只需使用您最喜欢的语言编写脚本。在伪代码:

$tables = get_tables(); // write funciton that uses "show tables from books;" 
foreach $tables as $table { 
    $userid = getIdFromTableName($table); // simple regexp 
    $data = getRowFromTable($table); // get data from old table 
    insertIntoUser($userid, $data); // inserts your userid and the data in the new table 
} 

它太广泛,找出你最喜欢的语言是什么,以及具体创建脚本,但是这是你应该做的。

相关问题