Как преобразовать набор записей SQL в BLOB?
Я использую базу данных ORACLE, и мне нужно получить BLOB (или другой формат LOB) огромного набора записей (несколько тысяч строк), который я получаю из запроса. Мне нужно заполнить выходной формат как большой объект, чтобы затем предоставить его, как входные данные для функции DBMS_CRYPTO.Hash, которая генерирует нужный мне хэш-ключ.
Можно ли заполнить LOB напрямую данными запроса, проанализированными по типу JSON? Или вы советуете мне использовать другой формат для эффективного заполнения формата (B)LOB?
Спасибо
1 ответ
Непосредственный ответ: вы можете сериализовать свой огромный набор записей в XML
SELECT DBMS_XMLGEN.getxmltype ('select * from EMPLOYEE') FROM DUAL
Выход:
SELECT DBMS_XMLGEN.getxmltype ('select * from EMPLOYEE') FRU DUAL
Выход:
<ROWSET>
<ROW>
<EMP_ID>1</EMP_ID>
<EMP_NAME>Employee 1</EMP_NAME>
<EMP_DEPT_ID>1</EMP_DEPT_ID>
<EMP_LOC>1</EMP_LOC>
<EMP_SAL>2000</EMP_SAL>
</ROW>
<ROW>
<EMP_ID>2</EMP_ID>
<EMP_NAME>Employee 2</EMP_NAME>
<EMP_DEPT_ID>2</EMP_DEPT_ID>
<EMP_LOC>2</EMP_LOC>
<EMP_SAL>1000</EMP_SAL>
</ROW>
</ROWSET>
После этого вы можете использовать функцию to_clob or_to_blob
SELECT TO_CLOB (DBMS_XMLGEN.getxmltype ('select * from EMPLOYEE')) FROM DUAL
вывод:(HUGECLOB)