在DB2forz上使用常量和DB2UNLOAD实用程序

在DB2forz上使用常量和DB2UNLOAD实用程序,db2,db2-zos,Db2,Db2 Zos,我正在处理一个数据升级问题 在现有的DB2表中添加了一个新列 为了升级客户机的DB2表,我正在从现有的DB2表中卸载数据,并为新列指定一个常量值(假设是SMALLINT类型的D),如下所示: UNLOAD TABLESPACE XYZ.ABC DELIMITED COLDEL X'2C' CHARDEL X'22' PUNCHDDN SYSPUN01

我正在处理一个数据升级问题

在现有的DB2表中添加了一个新列

为了升级客户机的DB2表,我正在从现有的DB2表中卸载数据,并为新列指定一个常量值(假设是SMALLINT类型的D),如下所示:

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正在卸载记录中的D列的值之后添加字符分隔符X'22'

请注意,列B是一个现有列,声明为SMALLINT,DB2没有在卸载记录中为此添加字符del

这可能是因为此处添加的新列D没有声明为SMALLINT,因此它没有被视为SMALLINT,DB2正在卸载记录中为此结束char del

我只是在寻找摆脱这种情况的方法,我不希望我的新列D在卸载记录中以字符分隔


任何克服此问题的建议都将不胜感激。

一个选项是使用DSNTIAUL执行卸载,并在选择列表中选择常量

选择A、B、C、强制转换(0作为SMALLINT)作为D 来自表DB2BG111.TABLE_name

致以最良好的祝愿,
Patrick Bossman

你能告诉卸载者常量的数据类型是什么吗?如果
UNLOAD
认为它是一个字符串,它可能会在其周围添加字符分隔符。无法真正找到任何分隔符来将新列声明为SMALLINT并为其指定常量值。@Manish不清楚为什么需要卸载。通常,在不卸载的情况下添加列更明智、更安全、更快。不管怎样,文档声明常量只能是字符串类型。避免卸载,或者使用SMALLINT类型的新列创建一个临时表,并将数据复制到临时表中,然后从临时表中卸载。