Методы сравнения данных между различными схемами - PullRequest
0 голосов
/ 12 декабря 2008

Существуют ли методы сравнения одних и тех же данных, хранящихся в разных схемах? Ситуация примерно такая. Если у меня есть БД со схемой A, и он хранит данные для функции, скажем, в 5 таблицах. Схема A -> Схема B выполняется во время процесса обновления. В процессе обновления применяется некоторая логика преобразования, и данные хранятся в 7 таблицах на схеме B. Что мне нужно, так это какой-то способ проверки целостности данных, в основном мне пришлось бы сравнивать различные схемы с учетом логики преобразования. Если не считать некоторых пользовательских sprocs t-sql для сравнения данных, есть ли альтернативный метод? Я склоняюсь к Python, чтобы автоматизировать это, есть ли какие-нибудь модули Python, которые могут мне помочь? Чтобы лучше проиллюстрировать мой вопрос, следующая диаграмма - это грубая картина одного из множества наборов данных, которые мне нужно сравнить. Свойства 1, 2, 3 и 4 перенесены из источника в схему, но распределены по разным таблицам. 1001 *

Table1Src                             Table1Dest
  |                                       |
  --ID(Primary Key)                       --ID(Primary Key)
  --Property1                             --Property1
  --Property2                             --Property5
  --Property3                             --Property6

Table2Src                             Table2Dest
  |                                       |
  --ID(Foreign Key->Table1Src)            --ID(Foreign Key->Table1Dest)
  --Property4                             --Property2
                                          --Property3

                                      Table3Dest
                                          |
                                          --ID(Foreign Key->Table1Dest)
                                          --Property4
                                          --Property7

Ответы [ 3 ]

2 голосов
/ 12 декабря 2008

Создание «представлений» обеих схем, которые переводят в одно и то же бизнес-представление данных. Экспортируйте эти представления в плоские файлы, и затем вы сможете использовать любую простую утилиту сравнения файлов vanilla, чтобы сравнить и указать на различия.

1 голос
/ 12 декабря 2008

По сути, вы должны создать представления объектов для обеих версий схемы, а затем сравнить объекты. Это лучше всего сделать, если все они помещаются в память одновременно; если нет, вам нужно перебрать все объекты в одном представлении, извлечь соответствующий объект в другом представлении, сравнить их, а затем сделать то же самое наоборот.

Трудной частью может быть получение представлений объекта; Вы можете видеть, можно ли SQLAlchemy удобно использовать для ваших таблиц. SQLAlchemy, в принципе, может отображать существующие определения схемы на объекты.

0 голосов
/ 12 декабря 2008

Я успешно использовал SQLAlchemy для миграции между одной схемой и другой - это аналогичный процесс (как указано Martin v. Löwis) для сравнения. Особенно, если вы используете метод .equals (другой).

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