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

используй udf xpath
http://www.ibase.ru/devinfo/xmldb.htm
...
Рейтинг: 0 / 0
03.11.2015, 14:47
    #39093799
MikMak
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом обновить XML размещённый в BLOB-е ?
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
03.11.2015, 14:50
    #39093801
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Каким образом обновить XML размещённый в BLOB-е ?
Hello, Mikmak!
You wrote on 3 ноября 2015 г. 14:50:05:

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

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

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

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

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

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

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

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

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

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

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

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


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