2016-03-05 89 views
-1

出于测试目的,我想将数据库中的数据量加倍。MySQL Double数据库中没有孤立数据的数据量

有没有的要对此,除了通过表架构循环是一个更好的方法方式:

select table_name from information_schema.tables where table_schema='<database_name>';

对于表名的结果:

explain <database_name>.<table_name>;

在Python中创建的对象基于在桌子上

select * from <table_name>;

的东西,数据成我们创建

更改对象的主键(GUID)到一个新的GUID和对象,如果该主键中的其它对象其他地方存在改变到相同的GUID

插入新数据进入数据库。

预期结果: 这会使我在数据库中拥有的对象数量增加一倍。

回答

1

你不需要在Python中创建对象。您可以将表中的数据重新插入到自身中:

insert into t 
    select t.* 
    from t; 

这假定没有列是标识列(可能是错误的假设)。因此,您需要列出列:

insert into t(col1, col2, . . .) 
    select col1, col2, . . . 
    from t; 

不包括标识列。让它得到它的默认值。如果未设置标识,那么你可能需要做一些事情,如:

insert into t(col1, col2, . . .) 
    select t.id + maxid + 1, col1, col2, . . . 
    from t cross join 
     (select max(id) as maxid from t) m; 

对于UUID,你会产生使用功能的新的密钥。

但是,不需要将数据移出数据库以执行此操作。

+0

这还假设外键关系在数据库中正确设置了权利?我不确定,情况总是如此 – ClickThisNick

+0

OP只是希望将数据库中的数据翻倍,所以我觉得只是将表的副本添加到新表中会减轻身份问题 –

+0

@ cricket_007。 。 。这个答案中没有任何建议创建一个新表。查询只是将表的数据重新插入到同一个表中。 –