Как перенести столбец CLOB в (json) BLOB в DB2 без усечения данных? - PullRequest
0 голосов
/ 10 октября 2019

У меня есть база данных DB2 11 с большой таблицей, в которой данные JSON хранятся в столбце CLOB. Учитывая, что я хотел бы выполнить запросы к нему с помощью функции JSON_VAL, мне всегда нужно сначала использовать JSON2BSON для его преобразования, что, как я полагаю, является значительным расходом. Я хотел бы переместить данные в другую таблицу, которая имеет точно такую ​​же структуру, за исключением столбца CLOB, который я хотел бы заменить на BLOB, чтобы немедленно сохранить JSON в BLOB, надеясь, что это ускорит мои запросы.

Мой подход к этому был написать

insert into newtable (ID, BLOBDATA) select ID, SYSTOOLS.JSON2BSON(CLOBDATA) from oldtable;

. После этого я понял, что длинные объекты json обрезаются. Я гуглил на это и узнал, что выбирает для усечения больших объектов.

Я обращаюсь сюда, чтобы посмотреть, есть ли какой-нибудь простой способ выполнить это упражнение, без необходимости писать программу для чтенияи запишите все данные обратно. (Я сам сгорел с аналогичным усечением, которое имело место при использовании функций экспорта DB2 CSV.)

Спасибо.

1 Ответ

1 голос
/ 10 октября 2019

Начиная с Db2 11.1.4.4 существуют новые функции JSON , основанные на техническом документе ISO. Я бы посоветовал использовать их. Это стратегическая функциональность на будущее.

Вы можете использовать JSON_VALUE , чтобы выполнить эквивалент того, что вы запланировали с JSON_VAL.

...