Mainframe Connector 数据类型

本页面介绍了 Mainframe Connector 支持的所有数据类型。

通用字段修饰符

所有大小的基本 COBOL 字段都支持以下通用转码器字段修饰符(使用 defaults、field_suffixes 或 field_overrides 进行配置):

  • null_if:根据指示器字段的值对 NULL 进行解码或编码。
  • null_if_empty:如果字段中的所有字节均为 0x00(低值),则解码为 NULL;将 NULL 编码为 0x00 字节。
  • decode_as_null:如果所有字节都与配置的 hex_bytes 值(例如,EBCDIC 空格为 "40",低值为 "00",高值为 "FF")匹配,或者解码后的值与 values 列表匹配,则解码为 NULL。
  • encode_null_as:将 NULL 编码为重复的 hex_byte 或特定的默认 value。
  • null_if_invalid:将无效字段数据解码为 NULL,而不是将 遭拒记录发送到溢出数据集。
  • bytes:替换该字段,以在不进行字符解码的情况下读取和写入原始 BYTES。
  • filler:从解码后的输出架构中排除该字段,并在编码期间用 hex_byte(默认 0x40)填充该字段 。
  • chain:按顺序应用多个字段修饰符。

COBOL 数据类型映射表

COBOL 用法类型 其他受支持的字段修饰符 Copybook 或修饰符条件 逻辑类型 ORC 类型 BigQuery 数据类型
COMP-1,COMP-2
(COMPUTATIONAL-1,COMPUTATIONAL-2)
hfp COMP-1(4 字节单精度)或 COMP-2(8 字节双精度),不带 PICTURE 子句,或任何带有 hfp 修饰符的 4 字节或 8 字节字段。 Double double FLOAT64
BINARY、COMP、COMPUTATIONAL、COMP-4、COMP-5(有符号) binary
format_date
二进制字段的默认值,或 binary.signedness 设置为 SIGNED 时的默认值。
按精度划分的字节大小 (p):
  • p ≤ 4:2 字节
  • 5 ≤ p ≤ 9:4 个字节
  • 10 ≤ p ≤ 18:8 字节
(还支持使用 binary 修饰符的 1、2、4 或 8 字节字段。)
Long bigint INT64
BINARY、COMP、COMPUTATIONAL、COMP-4、COMP-5(无符号) binary
format_date
应用 binary 修饰符,并将 signedness 设置为 UNSIGNED。 Long bigint INT64
DISPLAY(或任何大小的字段,以原始字节表示) bytes 任何具有静态字节大小且应用了 bytes 字段修饰符(通过 field_overrides、field_suffixes 或 defaults)的字段。 Bytes binary BYTES
DISPLAY(或整数 Long 字段)作为日期 format_date
string
字符串字段(DISPLAY、DISPLAY-1、NATIONAL、UTF-8)或整数字段(Long 逻辑类型),带有 format_date 修饰符和与字段的字符长度(对于字符串)或数字精度(对于整数)匹配的格式条目。 Date date DATE
DISPLAY(字符串)作为时间戳 format_timestamp
string
具有 format_timestamp 修饰符且格式条目与字段字节大小匹配的字符串字段。 Timestamp timestamp TIMESTAMP
DISPLAY (*)(字母数字) string USAGE DISPLAY(或省略的 USAGE)与字母数字、字母或字母数字编辑的 PICTURE(X、A、B、0、/)搭配使用。
  • 如果省略 USAGE 且 PIC 为 N,则视为 NATIONAL。
  • 如果省略 USAGE 且 PIC 为 U,则视为 UTF-8。
String string STRING
DISPLAY-1 (DBCS) string 将 USAGE DISPLAY-1 替换为 PIC G(可选择搭配 B)或 PIC N。每个符号占用 2 个字节。 String string STRING
NATIONAL string USAGE NATIONAL 替换为 PIC N(或省略 USAGE 替换为 PIC N)。每个符号占用 2 个字节。 String string STRING
UTF-8 string 将 USAGE UTF-8 替换为 PIC U(或将省略的 USAGE 替换为 PIC U)。 String string STRING
DISPLAY (GROUP)(可变长度字符串) varlen 一个包含两个子字段且带有 varlen 修饰符的组字段:
  1. 逻辑类型为 Long 的长度子字段(例如,BINARY、ZONED 或 PACKED-DECIMAL,以及 precision ≤ 18 和 scale = 0)。
  2. 未修改的字符串子字段(DISPLAY、DISPLAY-1、NATIONAL 或 UTF-8)。
String string STRING
PACKED-DECIMAL
(COMP-3,COMPUTATIONAL-3)
packed_decimal
format_date(当 Long 时)
precision ≤ 18 和 scale = 0
(或 packed_decimal.logical_type 设置为 LONG)
Long bigint INT64
PACKED-DECIMAL
(COMP-3,COMPUTATIONAL-3)
packed_decimal precision ≤ 18 和 scale > 0
(或 packed_decimal.logical_type 设置为 DECIMAL64)
Decimal64 decimal(p, s) NUMERIC
PACKED-DECIMAL
(COMP-3,COMPUTATIONAL-3)
packed_decimal 19 ≤ precision ≤ 38 和 scale = 0
(或 packed_decimal.logical_type 设置为 BIG_INTEGER)
BigInteger decimal(38, 0)
  • INT64 (p = 19)
  • NUMERIC (20 ≤ p ≤ 38)
  • BIGNUMERIC (p > 38)
PACKED-DECIMAL
(COMP-3,COMPUTATIONAL-3)
packed_decimal 19 ≤ precision ≤ 38 和 scale > 0
(或 packed_decimal.logical_type 设置为 BIG_DECIMAL)
BigDecimal decimal(p, s)
  • NUMERIC(p ≤ 38 和 s ≤ 9)
  • BIGNUMERIC(p > 38 或 s > 9)
ZONED
(DISPLAY,数字 PICTURE)
zoned_decimal
format_date
precision ≤ 18 和 scale = 0
(或 zoned_decimal.logical_type 设置为 LONG)
Long bigint INT64
ZONED
(DISPLAY,数字 PICTURE)
zoned_decimal precision ≤ 18 和 scale > 0
(或 zoned_decimal.logical_type 设置为 DECIMAL64)
Decimal64 decimal(p, s) NUMERIC
ZONED
(DISPLAY,数字 PICTURE)
zoned_decimal 19 ≤ precision ≤ 38 和 scale = 0
(或 zoned_decimal.logical_type 设置为 BIG_INTEGER)
BigInteger decimal(38, 0)
  • INT64 (p = 19)
  • NUMERIC (20 ≤ p ≤ 38)
  • BIGNUMERIC (p > 38)
ZONED
(DISPLAY,数字 PICTURE)
zoned_decimal 19 ≤ precision ≤ 38 和 scale > 0
(或 zoned_decimal.logical_type 设置为 BIG_DECIMAL)
BigDecimal decimal(p, s)
  • NUMERIC(p ≤ 38 和 s ≤ 9)
  • BIGNUMERIC(p > 38 或 s > 9)