2016-03-05 2 views
-1

В целях тестирования я хотел бы удвоить объем данных в базе данных.MySQL Double Количество данных в базе данных без сиротских данных

Есть ли лучший методологический способ идти об этом, кроме цикла по схеме таблицы, как:

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

Для table_name в результате:

explain <database_name>.<table_name>;

Создание объектов в Python на основе на столе

select * from <table_name>;

Вещи эти данные в объекты, которые мы создали

Изменение объектов первичного ключа (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. , , Ничто в этом ответе не предполагает создание новой таблицы. Запросы просто вставляют данные таблицы обратно в одну и ту же таблицу. –

Смежные вопросы