使用存储在单独 table 中的数据填充 table

Populate table with data stored in separate tables

我有一个 MySQL 数据库 separate_data,它由 200 个 table 随机命名(例如 first_tablesecond_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_datatable应该是

+------+------+---------------+
| 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 成员来扩展其他相关表的查询。