Обновление множества строк со случайными данными в Mysql - PullRequest
0 голосов
/ 01 октября 2019

У меня есть база данных с личными данными, которые я хочу анонимизировать со случайными именами и т. Д. Например, таблица person (id int, first_name varchar, last_name varchar, birth_date date). У меня также есть таблица со случайными именами, например. first_name (id int, value varchar). Я знаю, что это сводится к оптимизации select * from ... order by rand(), и я прочитал несколько вопросов о StackOverflow (и http://jan.kneschke.de/projects/mysql/order-by-rand/),, но это не отвечает на вопрос об обновлении со случайными данными в массе.

Я пробовал:

  1. (вначале) UPDATE _person me SET birth_date = (SELECT value FROM anonymizer.birth_date ORDER BY RAND() LIMIT 1) (... то же самое для других столбцов). Поскольку существует несколько таблиц, анонимная обработка всей БД происходила в течение часа, когда я ее прерывал.
  2. (В настоящее время) UPDATE _person me join anonymizer.first_name on anonymizer.first_name.id = round(rand() * (select max(id) from anonymizer.first_name)) SET first_name = anonymizer.first_name.value. Этот единственный запрос занял 5 минут (без учета других столбцов и таблиц).

Я могу подготовить свои поддельные таблицы данных любым способом (initс порядковыми номерами и т. д.). Есть ли способ эффективно анонимизировать БД?

...