您好,我是小DAI,专注于数据库管理员相关的技术问答,请问有什么可以帮您?

列宽问题

SAP IQ 假定输入数据的宽度与目标列的宽度相同,并以相应方式读取输入文件。

如果二者的宽度不相同,SAP IQ 可能会为该列读取过少或过多的输入文件字节数。结果,该列的读取可能不正确,并且对输入文件中后续各列的读取也将不正确,因为它们不会从输入文件中的正确位置开始。

例如,如果 input_column1 的宽度为 15 字节,destination_column1 的宽度为 10 字节,并且未指定 ASCII 转换选项,则 SAP IQ 假定输入列宽度仅为 10 字节。这对于 destination_column1 并无大碍,因为输入数据都将被截断为 10 字节。但是,这还表示 SAP IQ 假定输入文件中的下一列将从第 11 个字节开始(该字节仍位于第一列中),而不是从第 16 个字节开始(该字节是下一列的正确起始位置)。

相反,如果 input_column1 的宽度为 10 字节,destination_column1 的宽度为 15 字节,并且未指定 ASCII 转换选项,则 SAP IQ 假定输入列宽度为 15 字节。这表示 SAP IQ 将读取所有 input_column1 和输入文件下一列中的 5 字节,并将此值插入到 destination_column1。这样,该值即被插入到 destination_column1 中,并且所有后续列均不正确。

要防止出现此类问题,请使用 ASCII 转换选项。SAP IQ 通过此选项提供了几种指定固定宽度或可变宽度的输入列的方法。输入数据可以包含具有特定大小(字节)的固定宽度的输入列、带有列分隔符的可变宽度的输入列,以及根据二进制前缀字节定义的可变宽度的输入列。