Как удалить дубликаты из таблиц со столбцами типа CLOB?
У меня есть таблица с одним или несколькими столбцами типа CLOB. Эта таблица содержит повторяющиеся строки. Нормальные механизмы вроде distinct
а также group by
не работать на CLOB
в DB2. Как я могу удалить дубликаты на таких таблицах?
2 ответа
Один из способов решения этой проблемы, особенно если это то, что вам нужно будет делать регулярно, - это сравнение дайджестов или хэшей CLOB вместо самих CLOB.
В DB2 нет встроенной функции хеширования, поэтому для достижения этой цели вам нужно пройти через несколько циклов. Например, вы можете экспортировать объекты CLOB в виде файлов и вычислять их хэши с помощью утилиты ОС.
В качестве альтернативы вы можете создать простую пользовательскую функцию, написанную на Java (которая имеет встроенную поддержку MD5 и различные алгоритмы SHA). Одно из таких решений подробно описано здесь.
Вы можете попытаться использовать dbms_lob.compare
функция для сравнения содержимого полей CLOB. Это встроенный модуль. Поддерживаемый размер CLOB составляет до 10 МБ.