DSNURWBG - ПОЛЕ ВВОДА ffffff НЕ ПОЛНОСТЬЮ ВНУТРИ ЗАПИСИ ВВОДА

Я пытаюсь загрузить файл в таблицу DB2 и получаю следующую ошибку:

ПОЛЕ ВВОДА ffffffff НЕ ПОЛНОСТЬЮ ВНУТРИ ВХОДЯЩЕЙ ЗАПИСИ

может ли кто-нибудь предложить, что происходит не так.


person Manish    schedule 12.12.2019    source источник
comment
Это сообщение, которое вы получаете? DSNU335I csect-name ПОЛЕ ВВОДА 'ffffffff' НЕ ПОЛНОСТЬЮ ВНУТРИ ВХОДНОЙ ЗАПИСИ Если это так, я бы включил идентификатор сообщения DSNU335I в заголовок, так как более вероятно, что другие авторы будут искать это поле.   -  person Hogstrom    schedule 12.12.2019
comment
Ничто из того, что вы показываете, не является JCL, так почему тег JCL? Вы действительно работаете под MVS, а не под ZOS?   -  person NicC    schedule 13.12.2019
comment
@Hogstrom, добавил идентификатор сообщения в заголовок.   -  person Manish    schedule 13.12.2019
comment
@NicC, это работает на Z/OS, исправил тег. также размещение шага загрузки, используемого в JCL.   -  person Manish    schedule 13.12.2019
comment
Было бы здорово узнать, какой формат записи вы используете для своего набора входных данных? Если вы используете VB, то ваше значение UPDATE_ID заканчивается на позиции 115. Однако вы объявляете, что UPDATE_ID является CHAR (а не varchar), поэтому ваше значение должно быть длиной 10 символов, не меньше.   -  person VadimKo    schedule 13.12.2019
comment
@VadimKo UPDATE_ID объявляется как char длиной 10 в таблице и управляющей картой, используемой для загрузки данных в таблицу. Формат записи входного файла VB.   -  person Manish    schedule 13.12.2019
comment
Длина вашего значения UPDATE_ID составляет 7 символов. ПРЕОБРАЗОВАТЬ, если вы хотите добавить его в DB2 как CHAR, вы должны добавить еще 3 символа. или вы можете изменить столбец таблицы с CHAR на VARCHAR, если вы планируете использовать динамическое количество символов в будущем.   -  person VadimKo    schedule 13.12.2019
comment
@VadimKo, ок, большое спасибо, постараюсь поделиться результатами, как только смогу.   -  person Manish    schedule 13.12.2019
comment
@VadimKo, я изменил входные данные, как было предложено, и это сработало. Спасибо большое за вашу помощь.   -  person Manish    schedule 13.12.2019
comment
Что случилось весь вопрос. Он был хорошо отформатирован и полезен. То, что вроде бы осталось, не очень информативно и в ответах нет ссылки   -  person Hogstrom    schedule 13.12.2019


Ответы (1)


В этом примере у вас есть два идентичных столбца CREATE_ID и UPDATE_ID, оба являются CHAR (10), однако CREATE_ID находится в середине набора данных, и когда вы читаете входной файл, вы получаете значение «CONVERT» с 3 пробелами. всего 10 символов.

Когда вы читаете UPDATE_ID, вы получаете значение «CONVERT» всего из 7 символов, поэтому ваш процесс загрузки завершается неудачно. Если вы хотите использовать CHAR(10), вы должны предоставить ввод длиной 10 символов.

В вашем случае это происходит потому, что вы используете набор данных RECFM=VB (виртуальный блок), который динамически устанавливает длину (LRECL) каждой записи. В вашем случае длина записи установлена ​​​​на 115.

Здесь у вас есть несколько вариантов:

  1. если вы планируете использовать динамическое количество символов в столбце UPDATE_ID, вам следует изменить столбец на VARCHAR. (я бы пошел на этот)
  2. Или вы можете добавить еще 3 символа к значению «CONVERT» и использовать его как CHAR.
  3. Или вы можете использовать входной файл с RECFM=FB и LRECL=118, в этом случае он автоматически заполнит последние 3 символа как пробелы.
person VadimKo    schedule 13.12.2019