2016-03-05 68 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。 。 。這個答案中沒有任何建議創建一個新表。查詢只是將表的數據重新插入到同一個表中。 –