首页 > 解决方案 > 在 DB2 for z 上通过 DB2 UNLOAD 实用程序使用常量

问题描述

我正在处理数据升级问题。

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

请注意,B 列是现有列,并被声明为 SMALLINT,DB2 未在卸载记录中为此添加字符 del。

这可能会发生,因为此处添加的新列 D 未声明为 SMALLINT,因此未将其视为 SMALLINT,并且 DB2 在卸载记录中为此结束了 char del。

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

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

标签: db2db2-zos

解决方案


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

从表 DB2BG111.table_name 中选择 A、B、C、CAST (0 AS SMALLINT) AS D;

最好的问候,帕特里克·博斯曼


推荐阅读