|
Нужны примеры работы с большим LOB
|
|||
---|---|---|---|
#18+
Не так давно начал работать с DB2, до этого работал с несколькими другими базами. Некоторые вещи просто приводят в ступор, не ожидал такого от ИБМ. Есть таблица с полем CLOB, большинство записей небольшие,но есть и побольше. Насколько - не знаю, поскольку пакет DBMS_LOB работает с LOB длинной только до 10M, и я получаю SQL Error [22001]: Value "******************************************" is too long.. SQLCODE=-433, SQLSTATE=22001 при выполнении SELECT t.feature_id, DBMS_LOB.GETLENGTH(t.RESIDUES) AS len FROM feature t Я не могу даже размер LOB узнать, если он больше 10Mб! Есть ли какие-нибудь пакеты на C или JAVA для работы с LOB в DB2? Опять же в тех примерах, которые уже нашёл, предланалт создавать переменные типа CLOB(2G). Это что, весь LOB за раз в память тащить? Так и базу в своп свалить недолго. Может, я чего-то не понимаю? Версия 11.2 LUW. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2019, 20:02 |
|
Нужны примеры работы с большим LOB
|
|||
---|---|---|---|
#18+
Sergei.Agalakov, Так работает? Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2019, 07:48 |
|
Нужны примеры работы с большим LOB
|
|||
---|---|---|---|
#18+
Sergei.AgalakovНе так давно начал работать с DB2, до этого работал с несколькими другими базами. Некоторые вещи просто приводят в ступор, не ожидал такого от ИБМ. Есть таблица с полем CLOB, большинство записей небольшие,но есть и побольше. Насколько - не знаю, поскольку пакет DBMS_LOB работает с LOB длинной только до 10M, и я получаю SQL Error [22001]: Value "******************************************" is too long.. SQLCODE=-433, SQLSTATE=22001 при выполнении IBM заставляет Вас использовать LOB LOCATORs, и это (обычно) правильно. Для C смотрите: sqllib/samples/c/dtlob.sqc sqllib/samples/cli/dtlob.c Для ODBC/CLI "словами": LOB locators in CLI applications Для Java смотрите тут - LOB locators with the IBM Data Server Driver for JDBC and SQLJ и тут - Progressive streaming with the IBM Data Server Driver for JDBC and SQLJ ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2019, 12:53 |
|
Нужны примеры работы с большим LOB
|
|||
---|---|---|---|
#18+
Mark Barinstein, Спасибо, LENGTH работает, но мне надо подстроку искать и заменять, а там то же ограничение в 10Mb. Ну хоть узнал, что у меня есть CLOB на 220Mb. Начал писать свои функции на JAVA, пока получаю Код: plaintext 1.
Код: java 1. 2. 3. 4. 5. 6.
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
разбираюсь, что не так. Пытаюсь следовать JAVA routines но пока где-то косячу. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2019, 18:50 |
|
Нужны примеры работы с большим LOB
|
|||
---|---|---|---|
#18+
CawaSPb, Спасибо за ссылки, не видел раньше. Смущает Код: plaintext 1. 2.
Calls a stored procedure with a LOB value as an input or output argument Assigns a LOB host variable to a LOB locator host variable в Progressive streaming with the IBM Data Server Driver for JDBC and SQLJ Получается, что полноценная работа с большими LOB для DB2 возможна только вне базы. При попытке найти/заменить подстроку в CLOB 1Gb из хранимки придется материализовать весь LOB в переменную, отожрав 1 Gb памяти за раз. А если так звезды встали, что несколько пользователей решили это сделать одновременно? Может, есть какой-то обходной путь для использовния локатора в хранимках? Как-то у Оракла это все достаточно беспроблемно работало. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2019, 19:03 |
|
Нужны примеры работы с большим LOB
|
|||
---|---|---|---|
#18+
Sergei.Agalakov, А Вы что-то типа sqlj.install_jar('file:<path>/JLOB.jar', 'JLOB') делали? (см. sqllib/samples/java/jdbc/ - udfcat, udfjcat, UDF*.java, UDF*.db2) Про "LOB object is also materialized..." - там происходит "передача по значению", и такое поведение естественно. Передовайте Primary Key соответствующей строки и формируйте LOB LOCATOR/используйте возможности progressive streaming внутри хранимки или UDF. При этом у Вас получатся или более приближённые к бизнес-логике UDF/процедурки, или некоторый "фреймвок" со своими соглашениями, если Вы хотите сделать универсальный набор инструментов для работы с LOBами. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2019, 12:34 |
|
Нужны примеры работы с большим LOB
|
|||
---|---|---|---|
#18+
CawaSPb, Спасибо, хороший совет. Лучше б только ИБМ за меня этот код написала. Я JAR не делал, пока обошёлся отдельной хранимкой. Так и не смог заставить работать с Код: plaintext
Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2019, 20:54 |
|
|
start [/forum/topic.php?fid=43&msg=39817014&tid=1600252]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
57ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
others: | 327ms |
total: | 483ms |
0 / 0 |