powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Каким образом обновить XML размещённый в BLOB-е ?
25 сообщений из 72, страница 1 из 3
Каким образом обновить XML размещённый в BLOB-е ?
    #39093768
MikMak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть таблица с неким полем типа BLOB. Поле содержит достаточно большой объем XML данных. Задача проста и банальна: есть ли возможность произвести обновление данного поля посредством UPDATE с применением оператора xpath ?
Выборка какого либо атрибута или нода посредством SELECT с применением xpath проходит неплохо, вот и возникла идея использовать тот же xpath для обновления XML находящегося в данном поле
...
Рейтинг: 0 / 0
Каким образом обновить XML размещённый в BLOB-е ?
    #39093772
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MikMakесть ли
Нету. Как и самого xpath. BLOB - единая неделимая сущность.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Каким образом обновить XML размещённый в BLOB-е ?
    #39093780
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MikMak,

используй udf xpath
http://www.ibase.ru/devinfo/xmldb.htm
...
Рейтинг: 0 / 0
Каким образом обновить XML размещённый в BLOB-е ?
    #39093799
MikMak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdvMikMak,

используй udf xpath
http://www.ibase.ru/devinfo/xmldb.htm
Да, безусловно
Очевидным недостатком подобной схемы хранения, является невозможность использовать XML-атрибуты в условиях SQL запроса, а также выводить их в виде полей в Dataset. Однако, это в некоторой степени решается UDF функцией, выполняющей XPATH запрос к хранимому XML.
Например, запрос выбирающий всех клиентов из Москвы будет выглядеть так:
select * from customers where XPATH(XML, 'Address/MailAddress/City')='Москва'

У нас подобное проходило, о чем я написал в стартовом сообщении. Но это исключительно select. Возможно вы знаете где можно найти примеры аналогичного подхода к команде UPDATE ?
...
Рейтинг: 0 / 0
Каким образом обновить XML размещённый в BLOB-е ?
    #39093801
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Mikmak!
You wrote on 3 ноября 2015 г. 14:50:05:

Mikmak> Возможно вы знаете где можно найти примеры аналогичного подхода к команде UPDATE ?
при апдейте BLOB заменяется целиком, а не частично.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Каким образом обновить XML размещённый в BLOB-е ?
    #39093802
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MikMak,

у Firebird update стандартный, ваш вопрос я не понял. Блоб в Firebird (и InterBase) физически всегда обновляется целиком, даже если изменился только 1 байт, потому что версионность (старый блоб остается к старой версии, новый принадлежит новой версии записи).
...
Рейтинг: 0 / 0
Каким образом обновить XML размещённый в BLOB-е ?
    #39093842
MikMak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdvMikMak,

у Firebird update стандартный, ваш вопрос я не понял. Блоб в Firebird (и InterBase) физически всегда обновляется целиком, даже если изменился только 1 байт, потому что версионность (старый блоб остается к старой версии, новый принадлежит новой версии записи).Поясню что я имел ввиду. Допустим я заполучил целиком BLOB по какой либо выборке. Внутри него XML массив. есть ли пример применения xpath для обновления данного массива?
...
Рейтинг: 0 / 0
Каким образом обновить XML размещённый в BLOB-е ?
    #39093950
Фотография Tonal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvиспользуй udf xpath
http://www.ibase.ru/devinfo/xmldb.htm
Вот только неясно, умеет ли оно работать с кодировками, отличными от windows-1251, например с utf-8. По исходнику что-то незаметно.
...
Рейтинг: 0 / 0
Каким образом обновить XML размещённый в BLOB-е ?
    #39093972
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tonal,

Если такой вопрос возникнет, то автор создаст новый топик, где обсудит эту проблему, с изменением БЛОБа не связанную.
...
Рейтинг: 0 / 0
Каким образом обновить XML размещённый в BLOB-е ?
    #39094119
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MikMakДопустим я заполучил целиком BLOB по какой либо выборке. Внутри него XML массив. есть ли пример применения xpath для обновления данного массива?
допустим, вы получаете блоб целиком, по определению. Внутри него находится какая-то неведомая фигня. Вы ее можете обновлять неведомым нам способом, сколько угодно. Хоть 1 байт, хоть 100 байт, хоть весь блоб целиком, обновляйте на здоровье.

Примера "обновления данного массива через xpath" не существует, я вам уже объяснял, что блоб в ИБ-ФБ обновляется целиком, весь. Никто не запрещает вам при этом логически обновить 1 байт, через любую функцию.
И опять я вашего вопроса не понял, совершенно.
Вы какую-то фигню спрашиваете. Допустим в блобе есть xml. Допустим xpath вытаскивает элемент xml из блоба. Если вы хотите обновить этот элемент, то я вам уже сказал, что
а) блоб обновляется целиком, физически, создается его новая версия
б) вы можете обновить любой кусок блоба, как вам угодно. Если вы спрашиваете про xpath, то я не знаю, как кусок xml встроить в этот самый блоб. Вам его придется конструировать целиком, заново.
...
Рейтинг: 0 / 0
Каким образом обновить XML размещённый в BLOB-е ?
    #39094156
miwaonline
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MikMak]Поясню что я имел ввиду. Допустим я заполучил целиком BLOB по какой либо выборке. Внутри него XML массив. есть ли пример применения xpath для обновления данного массива?
Нет.

Если надо запросом изменять внутренности блоба, можно как-то поизвращаться с replace. Но правильнее - переделать структуру базы данных.

P.S. Еще можно сменить СУБД
...
Рейтинг: 0 / 0
Каким образом обновить XML размещённый в BLOB-е ?
    #39094375
olegenty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да всё же уже написано. Забрать блоб на клиента, попарсить, пообновлять куски, и целиком обновить.
Структуру БД не факт, что надо менять, может у него структура XML нерегулярная, и он еще тип рядом хранит.
...
Рейтинг: 0 / 0
Каким образом обновить XML размещённый в BLOB-е ?
    #39094387
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olegentyЗабрать блоб на клиента
Он не хочет это делать на клиенте, он хочет чтобы это было через xpath прямо на сервере.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Каким образом обновить XML размещённый в BLOB-е ?
    #39094676
olegenty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну тогда только распарсивать и пересобирать весь блоб в хранимке. Не прикольно.
...
Рейтинг: 0 / 0
Каким образом обновить XML размещённый в BLOB-е ?
    #39094678
DBConstructor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olegentyНу тогда только распарсивать и пересобирать весь блоб в хранимке. Не прикольно.
Чойто? А при хранении xml в файле, пересохранять целиком многометровый файл ради вставки нескольких строк прикольнее?
...
Рейтинг: 0 / 0
Каким образом обновить XML размещённый в BLOB-е ?
    #39094895
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBConstructor,

Если прочитаешь последние 2 комментария ещё раз, становится понятно, что "не прикольным" olegenty считает обработку в хранимой процедуре, а не само пересохранение файла/блоба.
...
Рейтинг: 0 / 0
Каким образом обновить XML размещённый в BLOB-е ?
    #39094912
DBConstructor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSery"не прикольным" olegenty считает обработку в хранимой процедуре, а не само пересохранение файла/блоба.
Тады "ой"! Был опять невнимателен.
...
Рейтинг: 0 / 0
Каким образом обновить XML размещённый в BLOB-е ?
    #39096173
DBConstructor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MikMak, если у вас такие специфичные задачи работы с xml, почему бы вам не хранить теги xml файла в таблице с пронумерованными строками и делать с ней всё, что заблагорассудится. Хотите - вставляйте произвольное количество тегов в середину, а хотите - формируйте в ХП BLOb и выплёвывайте его клиенту.
...
Рейтинг: 0 / 0
Каким образом обновить XML размещённый в BLOB-е ?
    #39096177
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBConstructor,

С нумерованными строками работать неудобно.
Проще хранить в "естественной" структуре - дерево.
...
Рейтинг: 0 / 0
Каким образом обновить XML размещённый в BLOB-е ?
    #39096234
DBConstructor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSery, отличное решение!Узлы дерева можно связать через мастер таблицу первичного ключа с поддержкой каскадного удаления, а по уровню вложенности определять отступы
...
Рейтинг: 0 / 0
Каким образом обновить XML размещённый в BLOB-е ?
    #39096365
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBConstructor,

Какие ещё "отступы"?
XML состоит из "узлов", это древовидная структура.
...
Рейтинг: 0 / 0
Каким образом обновить XML размещённый в BLOB-е ?
    #39096366
DBConstructor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSery, отступы для визуального оформления. Без них, конечно, экономнее.
...
Рейтинг: 0 / 0
Каким образом обновить XML размещённый в BLOB-е ?
    #39097374
Alex Truhin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не существует в XML ни каких отступов для визуального оформления.
...
Рейтинг: 0 / 0
Каким образом обновить XML размещённый в BLOB-е ?
    #39097384
DBConstructor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex Truhin, вы не поверите, но их не существует и в HTML, а также во всех известных мне языках программирования. Однако ими все пользуются и не ноют.
...
Рейтинг: 0 / 0
Каким образом обновить XML размещённый в BLOB-е ?
    #39097391
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBConstructor> Однако ими все пользуются и не ноют.

Если отступами пользуются (видят),
это не значит, что они есть (хранятся).

- Ты суслика видишь?
- Вижу.
- И я вижу. А его нет. (с) почти
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25 сообщений из 72, страница 1 из 3
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Каким образом обновить XML размещённый в BLOB-е ?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]