将多个表移动到一个,增加额外的字段值

时间:2009-11-10 17:50:38

标签: php mysql

我有31个单独的表(实际上我有365个,但让我们保持这个简单)在MySQL数据库中,每个表都包含给定日期的数据。这些表是根据当天(严重)命名的。

示例:

island01Aug07
island02Aug07
island03Aug07
island04Aug07
...
island31Aug07

我想将所有表合并到一个主表中:

island_08

使用 INSERT INTO 会很简单但我的问题是这些表没有用于表示日期的列。它必须被添加到目标表中,然后我需要在移动/复制表时填充它。

欢迎提出建议,建议和解决方案。

2 个答案:

答案 0 :(得分:1)

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
…

答案 1 :(得分:1)

作为替代选项,您可以列出数组中的所有表,如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