Как сравнить две таблицы с составным ключом, расположенные в разных системах (BigQuery и MySQL)? - PullRequest
0 голосов
/ 12 января 2019

Я должен ежедневно обновлять таблицы BigQuery строками из таблиц MySQL. Обычно я сравниваю максимальный идентификатор в обеих базах данных и получаю разные строки. Например, у меня есть TableBQ в BigQuery и TableM в Mysql, и они имеют одинаковую схему (столбцы с одинаковым именем и типом данных). Когда я делаю «SELECT MAX (ID) from», я получаю 1005 из TableM и 1003 из TableBQ, я делаю вывод, что TableBQ устарел, после чего я отправляю в TableBQ только строки с идентификаторами больше 1003. Это прекрасно работает с таблицами первичных ключей, но мне также необходимо обновить таблицы составных ключей.

Сегодня я вижу два решения:

1) худшее: вставлять всю таблицу (которая может иметь уже 16 миллионов строк) каждый день в BigQuery

2) не так плохо, но можно избежать: создайте первичный ключ и заставьте таблицу работать, как остальные

В моем случае мне нужно работать с двумя таблицами составных ключей, и одна из них была создана Wordpress: wp_term_relationships

1 Ответ

0 голосов
/ 12 января 2019

вы можете использовать суррогатный ключ для ваших данных.

В вашем случае структура вашей таблицы имеет составной ключ (натуральный ключ). Если вы можете изменить свою таблицу, я предлагаю вам добавить последовательный суррогатный ключ к вашей таблице, который не имеет никакого значения для бизнеса, но необходим для перемещения данных, и создать для него индекс.

Вы можете

ALTER TABLE `mytable` ADD `rowId` INT(8) UNIQUE NOT NULL AUTO_INCREMENT FIRST;

затем вы можете использовать этот столбец для определения данных, которые необходимо переместить в вашу целевую БД

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...