Использование констант с утилитой DB2 UNLOAD в DB2 for z - PullRequest
0 голосов
/ 03 октября 2019

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

В нашу существующую таблицу 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 заканчивает ввод этого символа в записи выгрузки.

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

Любые предложения по преодолению этой проблемы будут высоко оценены.

1 Ответ

0 голосов
/ 23 октября 2019

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

SELECT A, B, C, CAST (0 AS SMALLINT) AS D из таблицы DB2BG111.table_name;

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

...