powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Datastage загрузка файла в blob поле таблицы DB2
14 сообщений из 14, страница 1 из 1
Datastage загрузка файла в blob поле таблицы DB2
    #38441016
mva_cards
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Подскажите пожалуйста, существует ли возможность при помощи стейджей (DB2Connector или ODBC) загрузить отдельно лежащий файл в blob поле таблицы DB2?

Версия DataStage 8.7, cлой Engine на CentOS, целевая СУБД - DB2 9.1 for Z/OS
Как я понимаю должен быть применен метод "by reference".
Кто нибудь реализовывал подобную схему загрузки?
Если да - поделитесь опытом, как это сделать.

Заранее большое спасибо!
...
Рейтинг: 0 / 0
Datastage загрузка файла в blob поле таблицы DB2
    #38441074
Фотография Hunterik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
День добрый.
Конкретно с blob сейчас помочь не могу, потому как не делал, возможно, попробую на выходных. =)

Но могу дать вам информацию, как я заталкивал большие XML-файлы, может, сами доковыряете...

У меня была колонка
XML_FILE = LongNVarChar(104857600)
Для загрузки by reference выставлял ArraySize in DB2Connector = 1
, также увеличивал DSTransfBlock (104857600).

Особая хитрость состояла (над чем я долго бился как раз для DB2 for z/OS), это использование custom sql с конструкцией cast:
insert into testik.xmltd (id, xml_file) values (ORCHESTRATE.ID, xmlparse(document cast( ORCHESTRATE.XML_FILE as clob(1g)) preserve whitespace ))

При этом обычная DB2 UDB глотала большие файлы без приседания в виде cast... Но z - это z. =)

Конкретнее опишете задачу пожалуйста
1. Размер файлов blob, в каком виде представлены
2. Куда заталкивать (пример структуры таблицы БД)
...
Рейтинг: 0 / 0
Datastage загрузка файла в blob поле таблицы DB2
    #38441077
Фотография Hunterik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В базе была колонка типа XML.
...
Рейтинг: 0 / 0
Datastage загрузка файла в blob поле таблицы DB2
    #38441367
mva_cards
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hunterik,

К загрузке (кроме обычных полей) планируется использовать файлы zip архивов, размером до ~100 МБ.
Заталкиваем их в соответсвующий по макс размеру blob, т.е. для примера в следующую табличку
CREATE TABLE TABLE1 (
ID INTEGER,
FILENAME CHAR(10),
FILEBODY BLOB(100M)
)
Собственно первичная задача состоит в том, чтобы залить их в соответствующую таблицу DB2 средствами DataStage, тип джобов пока не имеет значения.

Коннектор для заливки XML какой использовали?
...
Рейтинг: 0 / 0
Datastage загрузка файла в blob поле таблицы DB2
    #38441370
mva_cards
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mva_cards,

Пардон, вопрос про коннектор снят ...
...
Рейтинг: 0 / 0
Datastage загрузка файла в blob поле таблицы DB2
    #38441396
mva_cards
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hunterik,

Кстати я правильно понимаю, что в колонке ORCHESTRATE.XML_FILE на DB2Connector приходит путь к файлу?
В этом случае путь на сервере Engine (simple insert) или Z/OS (bulk load)?
...
Рейтинг: 0 / 0
Datastage загрузка файла в blob поле таблицы DB2
    #38441431
Фотография Hunterik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Да, путь к файлу.
2. Путь на стороне DataStage Engine, использовал insert (обязательно ArraySize=1, ну и transaction size в 1 поставить).
...
Рейтинг: 0 / 0
Datastage загрузка файла в blob поле таблицы DB2
    #38441453
mva_cards
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hunterik,

Спасибо огромное за подсказку, буду пробовать.
...
Рейтинг: 0 / 0
Datastage загрузка файла в blob поле таблицы DB2
    #38441496
mva_cards
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hunterik,

Все залилось, отлично!!!

А вот касательно обратной задачи есть варианты (blob -> file)?
...
Рейтинг: 0 / 0
Datastage загрузка файла в blob поле таблицы DB2
    #38442179
Фотография Hunterik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже, я кое-что перепутал...
Вы не должны были залить файл. Проверяйте.
...
Рейтинг: 0 / 0
Datastage загрузка файла в blob поле таблицы DB2
    #38442276
Фотография Hunterik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mva_cards,
я проверил, теперь точно - я вас ввёл в заблуждение. =)

1. Путь к файлу ни при чём, кстати, скорее всего именно его вы залили в бинарном режиме в соответсвующее поле, как и я, когда решил проверить.
2. By reference тоже имеет особености... Похоже, что для вашей задаче не применимо.

В любом случае, задачу я решил. Я позже выгружу dsx...
Кратко:
Задание записи в DB2 for z/OS:
Sequential File (1a) -> Tfm (2a) -> DB2Connector (3a)
(1a): чтение файла в бинарном режиме целиком - весь файл в поле DataStage (FILE_BODY 104857600), параметры задаются схемой
(2a): добавляются поля (ID, наименование, что душе угодно...)
(3a): insert into test.table1 (id, file_name, file_body) values (ORCHESTRATE.ID, ORCHESTRATE.FILE_NAME, cast( ORCHESTRATE.FILE_BODY as blob(100M)))
Параметры задания:
$APT_DEFAULT_TRANSPORT_BLOCK_SIZE = 104857600 - Environment variable, как раз на 100 метров.
$APT_FILE_IMPORT_BUFFER_SIZE = 102400 - Environment variable, это тюнинг чтобы читать файл быстрее, я особо не заморачивасля, тоже стометровый сделал.
FILE_SCM = /tmp/test/file.scm - это файла-схемы, который используется (1a) для чтения файла с данными, пришлось использовать, так как на вкладке Format (1a) нельзя параметризовать Record length.

Задание для чтения из DB2 for z/OS:
DB2Connector(1b) -> Sequential File (2b):
(1b): чтение из базы происходит ОДНОГО файла за запуск!
(2b): запись в файл с использованием файла-схемы, аналогичной (1a)
Параметры задания:
$APT_FILE_EXPORT_BUFFER_SIZE = 102400 - Environment variable, это тюнинг чтобы писать файл быстрее.
FILE_SCM = /tmp/test/file.scm

Я протестировал на файле с размером 51.261.710 байт, задание на вставку 5 сек (network max 16321.7 KB/s), задание на выгрузку 17 сек (база почему-то тормозит на выдачу).

Да, если вы планируете заливать большие файлы в DB2 for z/OS, пусть админ глянет настройки LOBVALA/LOBVALS - они маленькие по умолчанию, большие файлы не зальёте.
Как и где настраиваются - не знаю, были проблемы, нашёл причину здесь - пинал админов.

Результаты сравнивал, cmp расхождений не показал. =)
...
Рейтинг: 0 / 0
Datastage загрузка файла в blob поле таблицы DB2
    #38442332
Фотография Hunterik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mva_cards,
выкладываю пример - разбирайтесь.
...
Рейтинг: 0 / 0
Datastage загрузка файла в blob поле таблицы DB2
    #38443094
mva_cards
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hunterik,

Добрый день!

Перенастроил джобы под себя, все заливается, сверка тоже проходит успешно (начал пока с небольших файлов)!
Нужно признать что нетривиальный подход у IBM к подобной загрузке.

Огромное спасибо за помощь, крайне ценные советы и особенно пример!!!
...
Рейтинг: 0 / 0
Datastage загрузка файла в blob поле таблицы DB2
    #38443157
Фотография Hunterik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mva_cards,
я рад, что всё хорошо.

Нетривиального ничего нет. Есть ограничения и подход к решению. =)

Из плоского файла можно читать либо по полям с разделителями, либо по полям с фиксированной длиной...

С разделителями читать нельзя, потому что неясно, что там в этих файлах - ... На своём zip-файле я не смог подобрать.
Ну а значение fixef length, к сожалению, не параметризуется... Зато параметризуется весь Sequential File stage с помощью схемы.

Дальше вопрос только в генерации схемы динамически, ибо разные файлы будут иметь разную длину. Вот и всё.
Я рутинку приложил, чтобы вы видели, что можно и так, реально - можно одной-двумя shell-командами собрать схему по шаблону.

Схему на выборку файла можно собирать по значению length(FILE_BODY) из базы данных.

Всё крайне просто и логично. Вы спрашивайте. В рабочее время скорее всего отвечать не буду, но вечерком могу глянуть. =)

Инструмент может очень много, если что-то не получается, то скорее по незнанию инструмента...
У меня всегда пока только так было, реальных ограничений не встречал.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Datastage загрузка файла в blob поле таблицы DB2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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