Как я могу прочитать очень длинный столбец BLOB в Oracle? - PullRequest
0 голосов
/ 05 мая 2020

Я хочу подключить API узла Express к базе данных Oracle 11g, в которой есть таблица со столбцом BLOB. Я хочу прочитать его, используя запрос SQL, но проблема в том, что столбец BLOB может иметь очень длинный текст, более 100 тыс. Символов. Как я могу это сделать?

Я пробовал использовать: select utl_raw.cast_to_varchar2(dbms_lob.substr(COLUMN_NAME)) from TABLE_NAME. Но он возвращает `` необработанная переменная длина слишком длинная ''.

Я могу сделать несколько запросов в al oop, а затем присоединиться к ним, если это было необходимо, но я не нашел, как вывести только часть капли .

1 Ответ

1 голос
/ 06 мая 2020

Используйте модуль node-oracledb для доступа к Oracle базе данных (что вы, вероятно, уже делаете, но не упоминаете).

По умолчанию node-oracledb вернет LOB как экземпляры Lob, из которых вы можете осуществлять потоковую передачу. В качестве альтернативы вы можете получить данные напрямую в виде строки или буфера, что полезно для «маленьких» больших объектов. Для 100 КБ я бы просто получил данные в виде буфера, что можно сделать, установив:

oracledb.fetchAsBuffer = [ oracledb.BLOB ];

Просмотрите документацию Работа с данными CLOB, NCLOB и BLOB и примеры вроде blobhttp. js и другие lob*.js файлы в каталоге примеров .

Вы также можете посмотреть https://jsao.io/2018/03/creating-a-rest-api-with-node-js-and-oracle-database/ который показывает Express и node-oracledb.

...