Как преобразовать набор записей 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)

Другие вопросы по тегам