Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Datastage загрузка файла в blob поле таблицы DB2
|
|||
|---|---|---|---|
|
#18+
Добрый день! Подскажите пожалуйста, существует ли возможность при помощи стейджей (DB2Connector или ODBC) загрузить отдельно лежащий файл в blob поле таблицы DB2? Версия DataStage 8.7, cлой Engine на CentOS, целевая СУБД - DB2 9.1 for Z/OS Как я понимаю должен быть применен метод "by reference". Кто нибудь реализовывал подобную схему загрузки? Если да - поделитесь опытом, как это сделать. Заранее большое спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2013, 12:03 |
|
||
|
Datastage загрузка файла в blob поле таблицы DB2
|
|||
|---|---|---|---|
|
#18+
День добрый. Конкретно с 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. Куда заталкивать (пример структуры таблицы БД) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2013, 12:36 |
|
||
|
Datastage загрузка файла в blob поле таблицы DB2
|
|||
|---|---|---|---|
|
#18+
В базе была колонка типа XML. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2013, 12:37 |
|
||
|
Datastage загрузка файла в blob поле таблицы DB2
|
|||
|---|---|---|---|
|
#18+
Hunterik, К загрузке (кроме обычных полей) планируется использовать файлы zip архивов, размером до ~100 МБ. Заталкиваем их в соответсвующий по макс размеру blob, т.е. для примера в следующую табличку CREATE TABLE TABLE1 ( ID INTEGER, FILENAME CHAR(10), FILEBODY BLOB(100M) ) Собственно первичная задача состоит в том, чтобы залить их в соответствующую таблицу DB2 средствами DataStage, тип джобов пока не имеет значения. Коннектор для заливки XML какой использовали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2013, 14:53 |
|
||
|
Datastage загрузка файла в blob поле таблицы DB2
|
|||
|---|---|---|---|
|
#18+
mva_cards, Пардон, вопрос про коннектор снят ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2013, 14:54 |
|
||
|
Datastage загрузка файла в blob поле таблицы DB2
|
|||
|---|---|---|---|
|
#18+
Hunterik, Кстати я правильно понимаю, что в колонке ORCHESTRATE.XML_FILE на DB2Connector приходит путь к файлу? В этом случае путь на сервере Engine (simple insert) или Z/OS (bulk load)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2013, 15:07 |
|
||
|
Datastage загрузка файла в blob поле таблицы DB2
|
|||
|---|---|---|---|
|
#18+
1. Да, путь к файлу. 2. Путь на стороне DataStage Engine, использовал insert (обязательно ArraySize=1, ну и transaction size в 1 поставить). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2013, 15:21 |
|
||
|
Datastage загрузка файла в blob поле таблицы DB2
|
|||
|---|---|---|---|
|
#18+
Hunterik, Спасибо огромное за подсказку, буду пробовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2013, 15:28 |
|
||
|
Datastage загрузка файла в blob поле таблицы DB2
|
|||
|---|---|---|---|
|
#18+
Hunterik, Все залилось, отлично!!! А вот касательно обратной задачи есть варианты (blob -> file)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2013, 15:46 |
|
||
|
Datastage загрузка файла в blob поле таблицы DB2
|
|||
|---|---|---|---|
|
#18+
Похоже, я кое-что перепутал... Вы не должны были залить файл. Проверяйте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2013, 12:53 |
|
||
|
Datastage загрузка файла в blob поле таблицы DB2
|
|||
|---|---|---|---|
|
#18+
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 расхождений не показал. =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2013, 17:07 |
|
||
|
Datastage загрузка файла в blob поле таблицы DB2
|
|||
|---|---|---|---|
|
#18+
mva_cards, выкладываю пример - разбирайтесь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2013, 20:10 |
|
||
|
Datastage загрузка файла в blob поле таблицы DB2
|
|||
|---|---|---|---|
|
#18+
Hunterik, Добрый день! Перенастроил джобы под себя, все заливается, сверка тоже проходит успешно (начал пока с небольших файлов)! Нужно признать что нетривиальный подход у IBM к подобной загрузке. Огромное спасибо за помощь, крайне ценные советы и особенно пример!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2013, 10:42 |
|
||
|
Datastage загрузка файла в blob поле таблицы DB2
|
|||
|---|---|---|---|
|
#18+
mva_cards, я рад, что всё хорошо. Нетривиального ничего нет. Есть ограничения и подход к решению. =) Из плоского файла можно читать либо по полям с разделителями, либо по полям с фиксированной длиной... С разделителями читать нельзя, потому что неясно, что там в этих файлах - ... На своём zip-файле я не смог подобрать. Ну а значение fixef length, к сожалению, не параметризуется... Зато параметризуется весь Sequential File stage с помощью схемы. Дальше вопрос только в генерации схемы динамически, ибо разные файлы будут иметь разную длину. Вот и всё. Я рутинку приложил, чтобы вы видели, что можно и так, реально - можно одной-двумя shell-командами собрать схему по шаблону. Схему на выборку файла можно собирать по значению length(FILE_BODY) из базы данных. Всё крайне просто и логично. Вы спрашивайте. В рабочее время скорее всего отвечать не буду, но вечерком могу глянуть. =) Инструмент может очень много, если что-то не получается, то скорее по незнанию инструмента... У меня всегда пока только так было, реальных ограничений не встречал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2013, 11:33 |
|
||
|
|

start [/forum/topic.php?fid=43&msg=38442332&tid=1601288]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
60ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
| others: | 14ms |
| total: | 181ms |

| 0 / 0 |
