2017-02-13 10 views
0

前に私は各ユーザーのテーブルを持つデータベースを含むアプリケーションを作成し、すべてのテーブルは1行しかありません。だから私はuser1、user2、...、user2800のようなテーブルを持っています。今私はそれがひどいアイデアだったので、私はすべてのユーザーのために1つの大きなテーブルを作成しようとしていることを知っています。より多くの同じテーブルから1つ大きなテーブルを作成

###は、ユーザのIDです
TABLE `user###` (`row_id`, `col1`, `col2`, ...) 

:私のようなテーブルからテーブル

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

を作成する必要があります。

どうすればいいですか?

+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 
} 

それはあなたの好みの言語が何であるかを把握する広すぎだし、どのような具体的には、スクリプトを作成することですが、これはあなたが何をすべきかです。

関連する問題