|
Каким образом обновить XML размещённый в BLOB-е ?
|
|||
---|---|---|---|
#18+
Есть таблица с неким полем типа BLOB. Поле содержит достаточно большой объем XML данных. Задача проста и банальна: есть ли возможность произвести обновление данного поля посредством UPDATE с применением оператора xpath ? Выборка какого либо атрибута или нода посредством SELECT с применением xpath проходит неплохо, вот и возникла идея использовать тот же xpath для обновления XML находящегося в данном поле ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2015, 14:20 |
|
Каким образом обновить XML размещённый в BLOB-е ?
|
|||
---|---|---|---|
#18+
MikMakесть ли Нету. Как и самого xpath. BLOB - единая неделимая сущность. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2015, 14:23 |
|
Каким образом обновить XML размещённый в BLOB-е ?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2015, 14:28 |
|
Каким образом обновить XML размещённый в BLOB-е ?
|
|||
---|---|---|---|
#18+
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 ? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2015, 14:47 |
|
Каким образом обновить XML размещённый в BLOB-е ?
|
|||
---|---|---|---|
#18+
Hello, Mikmak! You wrote on 3 ноября 2015 г. 14:50:05: Mikmak> Возможно вы знаете где можно найти примеры аналогичного подхода к команде UPDATE ? при апдейте BLOB заменяется целиком, а не частично. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2015, 14:50 |
|
Каким образом обновить XML размещённый в BLOB-е ?
|
|||
---|---|---|---|
#18+
MikMak, у Firebird update стандартный, ваш вопрос я не понял. Блоб в Firebird (и InterBase) физически всегда обновляется целиком, даже если изменился только 1 байт, потому что версионность (старый блоб остается к старой версии, новый принадлежит новой версии записи). ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2015, 14:50 |
|
Каким образом обновить XML размещённый в BLOB-е ?
|
|||
---|---|---|---|
#18+
kdvMikMak, у Firebird update стандартный, ваш вопрос я не понял. Блоб в Firebird (и InterBase) физически всегда обновляется целиком, даже если изменился только 1 байт, потому что версионность (старый блоб остается к старой версии, новый принадлежит новой версии записи).Поясню что я имел ввиду. Допустим я заполучил целиком BLOB по какой либо выборке. Внутри него XML массив. есть ли пример применения xpath для обновления данного массива? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2015, 15:13 |
|
Каким образом обновить XML размещённый в BLOB-е ?
|
|||
---|---|---|---|
#18+
kdvиспользуй udf xpath http://www.ibase.ru/devinfo/xmldb.htm Вот только неясно, умеет ли оно работать с кодировками, отличными от windows-1251, например с utf-8. По исходнику что-то незаметно. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2015, 16:47 |
|
Каким образом обновить XML размещённый в BLOB-е ?
|
|||
---|---|---|---|
#18+
Tonal, Если такой вопрос возникнет, то автор создаст новый топик, где обсудит эту проблему, с изменением БЛОБа не связанную. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2015, 17:06 |
|
Каким образом обновить XML размещённый в BLOB-е ?
|
|||
---|---|---|---|
#18+
MikMakДопустим я заполучил целиком BLOB по какой либо выборке. Внутри него XML массив. есть ли пример применения xpath для обновления данного массива? допустим, вы получаете блоб целиком, по определению. Внутри него находится какая-то неведомая фигня. Вы ее можете обновлять неведомым нам способом, сколько угодно. Хоть 1 байт, хоть 100 байт, хоть весь блоб целиком, обновляйте на здоровье. Примера "обновления данного массива через xpath" не существует, я вам уже объяснял, что блоб в ИБ-ФБ обновляется целиком, весь. Никто не запрещает вам при этом логически обновить 1 байт, через любую функцию. И опять я вашего вопроса не понял, совершенно. Вы какую-то фигню спрашиваете. Допустим в блобе есть xml. Допустим xpath вытаскивает элемент xml из блоба. Если вы хотите обновить этот элемент, то я вам уже сказал, что а) блоб обновляется целиком, физически, создается его новая версия б) вы можете обновить любой кусок блоба, как вам угодно. Если вы спрашиваете про xpath, то я не знаю, как кусок xml встроить в этот самый блоб. Вам его придется конструировать целиком, заново. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2015, 22:05 |
|
Каким образом обновить XML размещённый в BLOB-е ?
|
|||
---|---|---|---|
#18+
MikMak]Поясню что я имел ввиду. Допустим я заполучил целиком BLOB по какой либо выборке. Внутри него XML массив. есть ли пример применения xpath для обновления данного массива? Нет. Если надо запросом изменять внутренности блоба, можно как-то поизвращаться с replace. Но правильнее - переделать структуру базы данных. P.S. Еще можно сменить СУБД ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2015, 23:03 |
|
Каким образом обновить XML размещённый в BLOB-е ?
|
|||
---|---|---|---|
#18+
Да всё же уже написано. Забрать блоб на клиента, попарсить, пообновлять куски, и целиком обновить. Структуру БД не факт, что надо менять, может у него структура XML нерегулярная, и он еще тип рядом хранит. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2015, 13:12 |
|
Каким образом обновить XML размещённый в BLOB-е ?
|
|||
---|---|---|---|
#18+
olegentyЗабрать блоб на клиента Он не хочет это делать на клиенте, он хочет чтобы это было через xpath прямо на сервере. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2015, 13:28 |
|
Каким образом обновить XML размещённый в BLOB-е ?
|
|||
---|---|---|---|
#18+
Ну тогда только распарсивать и пересобирать весь блоб в хранимке. Не прикольно. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2015, 21:33 |
|
Каким образом обновить XML размещённый в BLOB-е ?
|
|||
---|---|---|---|
#18+
olegentyНу тогда только распарсивать и пересобирать весь блоб в хранимке. Не прикольно. Чойто? А при хранении xml в файле, пересохранять целиком многометровый файл ради вставки нескольких строк прикольнее? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2015, 21:36 |
|
Каким образом обновить XML размещённый в BLOB-е ?
|
|||
---|---|---|---|
#18+
DBConstructor, Если прочитаешь последние 2 комментария ещё раз, становится понятно, что "не прикольным" olegenty считает обработку в хранимой процедуре, а не само пересохранение файла/блоба. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2015, 09:19 |
|
Каким образом обновить XML размещённый в BLOB-е ?
|
|||
---|---|---|---|
#18+
WildSery"не прикольным" olegenty считает обработку в хранимой процедуре, а не само пересохранение файла/блоба. Тады "ой"! Был опять невнимателен. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2015, 09:30 |
|
Каким образом обновить XML размещённый в BLOB-е ?
|
|||
---|---|---|---|
#18+
MikMak, если у вас такие специфичные задачи работы с xml, почему бы вам не хранить теги xml файла в таблице с пронумерованными строками и делать с ней всё, что заблагорассудится. Хотите - вставляйте произвольное количество тегов в середину, а хотите - формируйте в ХП BLOb и выплёвывайте его клиенту. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 09:32 |
|
Каким образом обновить XML размещённый в BLOB-е ?
|
|||
---|---|---|---|
#18+
DBConstructor, С нумерованными строками работать неудобно. Проще хранить в "естественной" структуре - дерево. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 09:38 |
|
Каким образом обновить XML размещённый в BLOB-е ?
|
|||
---|---|---|---|
#18+
WildSery, отличное решение!Узлы дерева можно связать через мастер таблицу первичного ключа с поддержкой каскадного удаления, а по уровню вложенности определять отступы ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 10:27 |
|
Каким образом обновить XML размещённый в BLOB-е ?
|
|||
---|---|---|---|
#18+
DBConstructor, Какие ещё "отступы"? XML состоит из "узлов", это древовидная структура. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 11:49 |
|
Каким образом обновить XML размещённый в BLOB-е ?
|
|||
---|---|---|---|
#18+
WildSery, отступы для визуального оформления. Без них, конечно, экономнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 11:51 |
|
Каким образом обновить XML размещённый в BLOB-е ?
|
|||
---|---|---|---|
#18+
Не существует в XML ни каких отступов для визуального оформления. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2015, 21:01 |
|
Каким образом обновить XML размещённый в BLOB-е ?
|
|||
---|---|---|---|
#18+
Alex Truhin, вы не поверите, но их не существует и в HTML, а также во всех известных мне языках программирования. Однако ими все пользуются и не ноют. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2015, 21:27 |
|
Каким образом обновить XML размещённый в BLOB-е ?
|
|||
---|---|---|---|
#18+
DBConstructor> Однако ими все пользуются и не ноют. Если отступами пользуются (видят), это не значит, что они есть (хранятся). - Ты суслика видишь? - Вижу. - И я вижу. А его нет. (с) почти Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2015, 21:43 |
|
|
start [/forum/topic.php?fid=40&msg=39096173&tid=1562524]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 159ms |
0 / 0 |