将许多表转换为一个表mysql数据库

时间:2013-01-29 23:02:31

标签: mysql

我有一个包含数百个表的mysql数据库。我想将其转换为单个表,其中表名将被添加到记录中,这意味着对于特定表中的每一行/数据,我将添加一个新字段,在这个新字段中,值将是表名。有没有办法自动执行此操作,而不是我必须在每个表上创建一个新字段并手动插入表名称,这将需要一年。我在这个数据库上的记录大约有400000条记录。 mysqldump可以用脚本执行此操作吗?或任何其他方式?

1 个答案:

答案 0 :(得分:0)

我的建议是生成以下形式的语法:

create table xxx as
    select t.*, 'table1' as TableName from table1 t union all
    select t.*, 'table2' as TableName from table2 t union all
    . . .

您可以使用以下方法创建select语句:

select concat('select t.*, ''', Table_Name, ''' as TableName from ', Table_Name, ' union all '
from Information_Schema.Tables

然后,您可以将create table行放在前面并删除最终的union all