IBM DB2-不要卸载超过特定长度的十进制行

IBM DB2-不要卸载超过特定长度的十进制行,db2,db2-zos,Db2,Db2 Zos,我有一个IBMDB2表,我想从中卸载数据,以便将其加载到另一个DB2表中 除了一个十进制字段外,两个表都有相同的列(和类型) 在源表中为十进制(6),在目标表中为十进制(5) 源表中有许多条目在十进制字段中最多只使用5位数字,只有一些条目使用了全部6位数字 我要做的只是复制源表中最多5位的条目,并删除所有其他条目 我可以仅使用UNLOAD语句执行此操作吗?因此,有一个选项告诉系统“将列'id'卸载为十进制(5)(尽管它在表中是十进制(6)),并且如果该列的条目使用了所有6位数字(>99999),

我有一个IBMDB2表,我想从中卸载数据,以便将其加载到另一个DB2表中

除了一个十进制字段外,两个表都有相同的列(和类型)

在源表中为十进制(6),在目标表中为十进制(5)

源表中有许多条目在十进制字段中最多只使用5位数字,只有一些条目使用了全部6位数字

我要做的只是复制源表中最多5位的条目,并删除所有其他条目

我可以仅使用UNLOAD语句执行此操作吗?因此,有一个选项告诉系统“将列'id'卸载为十进制(5)(尽管它在表中是十进制(6)),并且如果该列的条目使用了所有6位数字(>99999),则不要卸载该行”

如果情况正好相反,你会如何处理?例如,从源中卸载十进制数(5),并在目标中加载为十进制数(6)

我为什么要这样做?因为目标表是较旧版本的应用程序使用的表的较旧版本。我们将在6个月内取消支持,但在此之前,我们需要刷新其中的数据集

关于卸载和加载,我指的是z/OS(?)的卸载和加载实用程序,如。
在不知道源环境的情况下,对于DB2Linux、Unix和Windows,export语句与select语句一起使用。因此,您可以做任何有意义的逻辑,将十进制(6)转换为十进制(5)-包括跳过需要全部6位数字的行,因为无法使它们适合5位数字的分配。这种环境中的实际首选方法是使用外部表,但它们的工作方式类似

导出到del select col1、dec_col6的“myfile.csv”,其中dec_col6<100000

创建外部表'myfile.csv',使用(分隔符',')作为select col1,当dec_col6>99999时为大小写,然后从表中以99999 else dec_col6结尾



由于您使用了“unload”一词,我想您要么使用了High Performance unload之类的工具,要么使用的是不同风格的Db2。

我认为这更适合dba.stackexchange或serverfault。。。为什么要跳过一些源数据行?如果他们真的很重要,他们不应该被转移吗?如果它们不重要,为什么不能删除它们?从较小的源字段加载效果很好-卸载/加载(就像备份一样)传统上是更新表定义的方法之一。我刚才谈到的z/OS卸载实用程序如下所述: