Переместить несколько таблиц в одну с добавлением дополнительного значения поля - PullRequest
1 голос
/ 10 ноября 2009

У меня есть 31 отдельная таблица (на самом деле у меня 365, но давайте сделаем это просто) в базе данных MySQL, каждая из которых содержит данные за определенный день. Таблицы (плохо) названы в зависимости от дня.

Пример:

island01Aug07
island02Aug07
island03Aug07
island04Aug07
...
island31Aug07

Я хотел бы объединить все таблицы в одну основную таблицу:

island_08

Было бы просто использовать INSERT INTO , но моя проблема в том, что в таблицах нет столбца для обозначения дня. Его нужно будет добавить в таблицу назначения, а затем мне нужно будет заполнить его при перемещении / копировании таблиц.

Предложения, советы и решения приветствуются.

Ответы [ 2 ]

1 голос
/ 10 ноября 2009

В качестве альтернативы вы можете перечислить все таблицы в массиве как table_name => mysql_date, после этого выполните цикл, скопируйте данные из одной таблицы и вставьте в другую. После успешной передачи данных вы можете удалить таблицу.

Вот пример получения списка таблиц и извлечения даты из него:

$prefix = 'island';
$lenght = strlen($prefix);

$result = $this->query("SHOW TABLES LIKE '{$prefix}%'");

$arrayDates = array();

if($db->num_rows($result))
{
    while($v = $db->fetch_array($result))
    {
        $mysql_table    = current($v);

        $arrayDates[$mysql_table] = date('d-m-Y',strtotime(substr($mysql_table,0,$lenght)));    
    }
}
//Now you can walk through your array and copy data from one table tyo another and append you mysql value
1 голос
/ 10 ноября 2009
CREATE TABLE island_08 (mydate DATE NOT NULL, field1 …)

INSERT
INTO     island_08 (mydate, field1, field2)
SELECT  '2007-07-01', field1, field2
FROM    island01Aug07
UNION ALL
SELECT  '2007-07-02', field1, field2
FROM    island02Aug07
UNION ALL
…
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...