Нужно сравнить капли в Firebird - PullRequest
2 голосов
/ 18 марта 2010

Мне нужно проверить содержимое больших двоичных объектов в моих базах данных (да, во множественном числе, но по одной проблеме за раз).

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

Как мне массово сравнивать значения, чтобы мне не приходилось выбирать каждую запись по одному, открывать большие объекты с помощью FlameRobin или Firebird Maestro и визуально сравнивать эти изображения?

Спасибо за любую помощь.

Ответы [ 2 ]

1 голос
/ 19 марта 2010

Вы можете справиться с этим двумя способами:

  1. создайте какую-то функцию, которая возвращает уникальное значение для каждого изображения, сохраните ее в другом столбце и сравните эти значения
  2. получите «библиотеку внешних функций» (также называемую «Библиотека пользовательских функций»), которая включает функцию «сравнения BLOB-объектов»: установите библиотеку на своем сервере, объявите функцию в своей базе данных и используйте ее.
1 голос
/ 18 марта 2010

попробуйте сделать хеш (например, md5) для каждого болба и посмотрите, совпадают ли они.

SELECT
    oldTable.PK
    FROM oldTable
        LEFT OUTER JOIN newTable ON oldTable.PK=newTable.PK
    WHERE MD5(oldTable.blob_column)!=MD5(newTable.blob_column)
...