Я хочу выполнить обновление данных JSON, хранящихся в столбце CLOB в таблице Db2.
Например, часть данных CLOB в настоящее время выглядит так
"commercialOfferPersonRoleList" : [ {
"commercialOfferPersonRolePK" : {
"commercialOfferId" : 100000000008817
},
"personId" : {
"personID" : "1000019579"
}
},
"roleBusinessPartner" : {
"value" : 1
}
]
и после обновления я хочу, чтобы это выглядело так
"commercialOfferPersonRoleList" : [ {
"commercialOfferPersonRolePK" : {
"commercialOfferId" : 100000000008817
},
"personId" : {
"personID" : "1000019579"
},
"roleBusinessPartner" : {
"value" : 1
}
}
]
Когда наше приложение срабатывает, значения заполняются в соответствующих тегах, и это значение CLOB сохраняется в таблице. Из-за некоторых изменений мне нужно аналогичным образом обновить значения COLB почти для 10 000 записей.
Есть ли способ написать общий скрипт для реализации такого изменения?
Раньше я использовал xquery для обновления структуры XML, но здесь нам нужно изменить положение тега вместе с соответствующим значением, и на этот раз это данные JSON.
просто чтобы упростить, моя цель:
before Update :
commercialOfferPersonRolePK
|
----------------------------------------------------
| |
----------------------------- roleBusinessPartner
| |
commercialOfferId personId
после обновления:
commercialOfferPersonRolePK
|
----------------------------------------------------------
| | |
commercialOfferId personId roleBusinessPartner
}
означает, что предыдущее значение не является допустимым XML, поэтому вы не сможете использовать для него функции XML. Если бы вы использовали тип данныхXML
для столбца, недопустимые данные не были бы допущены в первую очередь. Какова общая длина ваших значений CLOB и какую версию DB2 вы используете, это повлияет на то, какие функции вы можете использовать для обновления CLOB. - person Paul Vernon   schedule 14.09.2018SELECT MAX(LENGTH(DATA_OBJECT_CLOB)) FROM table
- person Paul Vernon   schedule 14.09.2018REPLACE
, так как длина меньше 1 048 576 байт. ibm.com/support/knowledgecenter/en/SSEPGG_11.1.0/ - person Paul Vernon   schedule 14.09.2018