db2 - 在 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 在卸载记录中以字符分隔。
任何克服此问题的建议将不胜感激。
解决方案
一种选择是使用 DSNTIAUL 执行卸载,并在选择列表中选择常量。
从表 DB2BG111.table_name 中选择 A、B、C、CAST (0 AS SMALLINT) AS D;
最好的问候,帕特里克·博斯曼
推荐阅读
- stripe-payments - 如何在结帐时自动填写地址输入(Stripe)
- javascript - Vue 2 - 重复的 Vue.js 实例
- tensorflow-lite - 从保存的模型转换为量化。tflite, 'op: CUSTOM 尚不支持量化'
- git - 由于远程副本后面的当前分支,推送到裸存储库被拒绝
- tensorflow2.0 - “FLAGS = flags.FLAGS”是什么意思
- php - 将两个数组转换为对象数组PHP(Laravel)
- css - 向右移动 p-panel-menu-icon
- android - Google PlayStore 在应用程序购买中退款仍然拥有
- c# - Mock.Arrange 它实际上做了什么?
- java - 无法运行maven项目。尝试使用“--enable-preview”运行