Какой самый быстрый способ сравнить около 700 000 строк из 2 разных баз данных, используя Perl? - PullRequest
7 голосов
/ 22 февраля 2012

Я использую Perl для подключения к 2 различным базам данных (MySQL и Sybase) с использованием DBI, около 700 000 записей на каждой, и мне нужно, чтобы они были одинаковыми (скорее всего, будет несколько разных записей каждую неделю или около того ), в первый раз это будет просто копирование таблицы, но это нужно делать регулярно (не реже одного раза в неделю), и просто отбрасывать таблицу и повторять все заново каждый раз - не хорошее решение. Мне было интересно: Какой самый быстрый способ сравнить около 700 000 строк из 2 разных баз данных с использованием Perl?

Примечание: таблицы имеют 5 полей (все они имеют тип символов, включая первичный ключ)

1 Ответ

4 голосов
/ 22 февраля 2012

Загрузите каждую отсортированную таблицу в Perl полностью, затем запустите Алгоритм: Diff в двух списках.В конце вы получите хороший список удаляемых строк и вставляемых строк.Некоторые строки могут быть удалены и повторно вставлены (если у вас есть внешние ключи, висящие на этих строках, вам нужно будет обновить, а не удалить / вставить).

700 000 строк - это не много данных на современноммашин, ни много памяти.

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

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