Nano Hash - криптовалюты, майнинг, программирование

Запрос Oracle анализирует XML из большого двоичного объекта с заголовком

У меня есть таблица в базе данных оракула 10, содержащая поле с BLOB (не CLOB). Этот BLOB содержит заголовок фиксированного размера размером около 300 байт, за которым следует XML-документ. Большой двоичный объект может иметь размер до 1 мегабайта. Я хотел бы создать запрос SQL, который использует XQUERY для этого документа для извлечения информации из XML.

Итак, структура примерно такая:

create table tbl(id integer, data blob);

insert into tbl(id,data) value(1,'HEADER <?xml version="1.0"><data>
  <row key="k1" value="v11"/>
  <row key="k2" value="v12"/></data>');

insert into tbl(id,data) value(2,'HEADER <?xml version="1.0"><data>
  <row key="k1" value="v21"/>
  <row key="k1" value="v21B"/>
  <row key="k2" value="v22"/></data>');

Мне нужен запрос к этой таблице, который при задании ключа k1 возвращает значения v11, v21 и v21B.

Я знаю, что эта организация данных неоптимальна, но ее нельзя изменить.

14.07.2011

Ответы:


1
  • Я старался. Насколько я понимаю, dbms_lob.substr обрезает XML до 32767 байт, но они могут быть до 1 МБ. 14.07.2011
  • Вы правы, спецификация DBMS_LOB.SUBSTR ( lob_loc IN CLOB CHARACTER SET ANY_CS, сумма IN INTEGER := 32767, смещение IN INTEGER := 1) RETURN VARCHAR2 CHARACTER SET lob_loc%CHARSET; так что вам нужно цикл. Сначала вызовите, чтобы получить первые 32 КБ, затем вызовите со смещением 32768 и добавьте буфер к вашему clob и так далее. 15.07.2011
  • Это тот момент, когда я застрял: как мне объединить все эти 32 КБ частей в SELECT? Или, если я помещу его в блок BEGIN...END, смогу ли я вернуть данные из этого блока, как если бы это был SELECT? Кроме того, поскольку у меня есть права только на чтение схемы, как мне объединить все эти 32-килобайтные части в памяти, не нарушая снова ограничение 32-килобайт? 18.07.2011
  • Спасибо, попробую. Кажется, это покрывает все мои проблемы 19.07.2011
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..