Использование констант с утилитой DB2 UNLOAD в DB2 for z

Я работаю над проблемой обновления данных.

В нашу существующую таблицу DB2 добавлен новый столбец.

Чтобы обновить клиентскую таблицу DB2, я выгружаю данные из существующей таблицы DB2 с постоянным значением для нового столбца (скажем, D типа SMALLINT), как показано ниже:

UNLOAD TABLESPACE XYZ.ABC                                       
DELIMITED COLDEL X'2C' CHARDEL X'22'
PUNCHDDN SYSPUN01                                                       
UNLDDN   SYSREC01 CCSID(367)                                                      
FROM TABLE DB2BG111.table_name                                             
(                                                                       
  A                              POSITION(*) CHAR(2)           
, B                              POSITION(*) SMALLINT          
, C                              POSITION(*) CHAR(4)           
, D (new column)                 CONSTANT X'0000'              
)                                   

При выгрузке данных мы используем следующие параметры выгрузки:

X'2C': Column Delimiter            
X'22': Character Delimiter            
CCSID(367): EBCDIC to ASCII conversion

Проблема, с которой я столкнулся, заключается в том, что DB2 добавляет разделитель символов X'22 'после значения столбца D в записи выгрузки.

Обратите внимание, что столбец B является существующим столбцом и объявлен как SMALLINT, DB2 не добавляет для него символ del в записи выгрузки.

Это может происходить из-за того, что добавленный здесь новый столбец D не объявлен как SMALLINT, и, следовательно, он не обрабатывается как SMALLINT, и DB2 заканчивает char del для этого в записи выгрузки.

Я просто ищу способ выйти из этой ситуации, я не хочу, чтобы мой новый столбец D был разделен символами в записи выгрузки.

Мы будем очень благодарны за любые предложения по преодолению этого.


person Manish    schedule 03.10.2019    source источник
comment
Можете ли вы сказать выгрузке, каков тип данных константы? Если UNLOAD считает, что это строка, он предположительно добавит вокруг нее разделители символов.   -  person Paul Vernon    schedule 03.10.2019
comment
Не удалось найти ни одного, чтобы объявить новый столбец как SMALLINT и присвоить ему постоянное значение.   -  person Manish    schedule 03.10.2019
comment
@Manish Непонятно зачем разгружать. Обычно разумнее, безопаснее, быстрее добавлять столбцы без выгрузки. Независимо от этого, в документации указано, что КОНСТАНТА может быть только строкового типа. Либо избегайте выполнения выгрузки, либо создайте временную таблицу с новым столбцом типа SMALLINT и скопируйте данные во временную таблицу и выгрузите из временной таблицы.   -  person mao    schedule 03.10.2019


Ответы (1)


Один из вариантов - использовать DSNTIAUL для выполнения выгрузки и выбрать константу в списке выбора.

ВЫБЕРИТЕ A, B, C, CAST (0 КАК МАЛЕНЬКОЕ) КАК D ИЗ ТАБЛИЦЫ DB2BG111.table_name;

С уважением, Патрик Боссман

person Patrick Bossman    schedule 23.10.2019