使用存储在单独 table 中的数据填充 table
Populate table with data stored in separate tables
我有一个 MySQL 数据库 separate_data
,它由 200 个 table 随机命名(例如 first_table
、second_table
、.. .)
这些 table 中的每一个都具有相同的结构和索引。
总大小约为30GB。
我想将所有这些数据复制到名为 new_database
的新 MySQL 数据库中,在 table all_data
中,保留结构(但删除 auto_increment列),并添加一列表示原来的table.
所以,例如,情况是:
first_table
+----+------+------+
| id | Col2 | Col3 |
+----+------+------+
| 1 | aaa | xxx |
| 2 | aaa | yyy |
| 3 | bbb | zzz |
+----+------+------+
second_table
+----+------+------+
| id | Col2 | Col3 |
+----+------+------+
| 1 | aaa | xxx |
| 2 | ccc | yyy |
| 3 | ddd | zzz |
+----+------+------+
结果all_data
table应该是
+------+------+---------------+
| Col2 | Col3 | Original |
+------+------+---------------+
| aaa | xxx | first_table |
| aaa | yyy | first_table |
| bbb | zzz | first_table |
| aaa | xxx | second_table |
| ccc | yyy | second_table |
| ddd | zzz | second_table |
+------+------+---------------+
问题是数据量。因此,在 PHP 中执行此操作不是一种选择。我可以进行一些手动工作(例如,先为 separate_data
创建数据转储,然后将此数据转储注入 new
数据库或类似的东西。
你似乎想要union all
:
create table all_data as
select col2, col3, 'first_table' as original from first_table
union all select col2, col3, 'second_table' from second_table
您通常会使用更多 union all
成员来扩展其他相关表的查询。
我有一个 MySQL 数据库 separate_data
,它由 200 个 table 随机命名(例如 first_table
、second_table
、.. .)
这些 table 中的每一个都具有相同的结构和索引。
总大小约为30GB。
我想将所有这些数据复制到名为 new_database
的新 MySQL 数据库中,在 table all_data
中,保留结构(但删除 auto_increment列),并添加一列表示原来的table.
所以,例如,情况是:
first_table
+----+------+------+
| id | Col2 | Col3 |
+----+------+------+
| 1 | aaa | xxx |
| 2 | aaa | yyy |
| 3 | bbb | zzz |
+----+------+------+
second_table
+----+------+------+
| id | Col2 | Col3 |
+----+------+------+
| 1 | aaa | xxx |
| 2 | ccc | yyy |
| 3 | ddd | zzz |
+----+------+------+
结果all_data
table应该是
+------+------+---------------+
| Col2 | Col3 | Original |
+------+------+---------------+
| aaa | xxx | first_table |
| aaa | yyy | first_table |
| bbb | zzz | first_table |
| aaa | xxx | second_table |
| ccc | yyy | second_table |
| ddd | zzz | second_table |
+------+------+---------------+
问题是数据量。因此,在 PHP 中执行此操作不是一种选择。我可以进行一些手动工作(例如,先为 separate_data
创建数据转储,然后将此数据转储注入 new
数据库或类似的东西。
你似乎想要union all
:
create table all_data as
select col2, col3, 'first_table' as original from first_table
union all select col2, col3, 'second_table' from second_table
您通常会使用更多 union all
成员来扩展其他相关表的查询。