我正在执行DB2加载,我很难理解使用GeneratedOverride而不是IdentityOverride的影响。当我运行以下命令时:
db2 load from tab123.ixf of ixf replace into application.table_abc
所有行都被拒绝,以下错误是罪魁祸首:
SQL3550W行row-number和column column-number中的字段值不为NULL,但目标列已定义为GENERATED ALWAYS。
所以试着踩到这个,我执行了 :
从copyoverride修改的ixf的tab123.ixf中的db2加载替换为application.table_abc
但是这立即返回了这个错误:
SQL3526N修饰符子句" IDENTITY OVERRIDE"与当前的load命令不一致。原因代码:" 3"。
从检查原因代码我发现问题是"已经指定了生成或身份相关的文件类型修饰符,但目标表中不包含这样的列。" ..但SQL3550W错误似乎推断列始终生成!
我可以让这些行提交到表的唯一方法是运行..
db2加载来自tab123.ixf的ixf修改,由generatedoverride替换为application.table_abc
任何人都可以告诉我为什么我收到SQL3526N错误,或运行generatedoverride的含义是什么?
感谢您坚持我......
答案 0 :(得分:2)
生成的列不一定是标识列,显然在您的情况下就是这种情况。查看CREATE TABLE
syntax,了解生成列值的其他方法。
在加载过程中使用GENERATEDOVERRIDE
选项,显然会将生成的值替换为(覆盖)输入文件中的值。