【问题标题】:DSNURWBG - INPUT FIELD ffffff NOT ENTIRELY WITHIN INPUT RECORDDSNURWBG - 输入字段 ffffff 不完全在输入记录中
【发布时间】:2019-12-12 11:48:20
【问题描述】:

我正在尝试将文件加载到 DB2 表并收到以下错误:

输入字段 ffffffff 不完全在输入记录中

任何人都可以提出问题所在。

【问题讨论】:

  • 这是您收到的消息吗? DSNU335I csect-name INPUT FIELD 'ffffffff' 不完全在输入记录中 如果是这样,我会在标题中包含消息 ID DSNU335I,因为其他发帖人更有可能搜索该字段。
  • 你没有展示任何东西是 JCL 那么为什么是 JCL 标签呢?你真的是在 MVS 而不是 ZOS 下运行吗?
  • @Hogstrom,在标题中添加了消息 ID。
  • 您的 UPDATE_ID 值的长度是 7 个符号 “CONVERT”如果您想将其作为 CHAR 添加到 DB2,则必须再添加 3 个符号。或者,如果您打算将来使用动态数量的符号,您可以将表列从 CHAR 更改为 VARCHAR。
  • 整个问题发生了什么。它的格式很好,很有帮助。似乎剩下的内容不是很丰富,答案没有参考

标签: db2 load mainframe jcl db2-zos


【解决方案1】:

在此示例中,您有两个相同的列 CREATE_ID 和 UPDATE_ID 都是 CHAR(10),但是 CREATE_ID 位于数据集的中间,当您读取输入文件时,您最终会得到“CONVERT”值,为 3空格。一共10个符号。

当您读取 UPDATE_ID 时,您最终会得到总共 7 个符号的“CONVERT”值,因此您的加载过程会失败。如果您想使用 CHAR(10),您必须提供一个长度为 10 个符号的输入。

在您的情况下,发生这种情况是因为您使用的是 RECFM=VB (虚拟块)数据集,该数据集动态设置了每条记录的(LRECL)长度。在您的情况下,记录的长度设置为 115。

你有几个选择:

  1. 如果您打算在您的 UPDATE_ID 列,那么您应该将列更改为 VARCHAR。 (我会选择这个)
  2. 或者您可以在“CONVERT”值中再添加 3 个符号,并将其用作 CHAR
  3. 或者您可以使用 RECFM=FB 和 LRECL=118 的输入文件,在这种情况下,它会自动将最后 3 个符号填充为空格。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-14
    • 2012-11-04
    • 2021-08-13
    • 2021-04-12
    • 2019-12-27
    • 1970-01-01
    • 2013-10-02
    相关资源
    最近更新 更多