我有31个单独的表(实际上我有365个,但让我们保持这个简单)在MySQL数据库中,每个表都包含给定日期的数据。这些表是根据当天(严重)命名的。
示例:
island01Aug07
island02Aug07
island03Aug07
island04Aug07
...
island31Aug07
我想将所有表合并到一个主表中:
island_08
使用 INSERT INTO 会很简单但我的问题是这些表没有用于表示日期的列。它必须被添加到目标表中,然后我需要在移动/复制表时填充它。
欢迎提出建议,建议和解决方案。
答案 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