本文档主要介绍 SequoiaDB 巨杉数据库与 FlinkSQL 的数据类型映射,以及两者间数据类型转换的兼容性。
| SequoiaDB 数据类型 | FlinkSQL 数据类型 | 
|---|---|
| int32 | INT | 
| int64 | BIGINT | 
| double | DOUBLE | 
| decimal | DECIMAL | 
| string | CHAR/VARCHAR/STRING | 
| OID | STRING | 
| boolean | BOOLEAN | 
| date | DATE | 
| timestamp | TIMESTAMP | 
| binary | BINARY/VARBINARY/BYTES | 
| null | 不支持 | 
| SequoiaDB\FlinkSQL | TINYINT | SMALLINT | INT | BIGINT | FLOAT | DOUBLE | DATE | TIMESTAMP | BOOLEAN | DECIMAL | CHAR/VARCHAR/STRING | BINARY/VARBINARY/BYTES | 
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| int32 | 可能溢出 | 可能溢出 | Y | Y | Y | Y | 可能超出DATE范围 | 可能超出TIMESTAMP范围 | Y | Y | Y | Y | 
| int64 | 可能溢出 | 可能溢出 | 可能溢出 | Y | Y | Y | 可能超出DATE范围 | 可能超出TIMESTAMP范围 | Y | Y | Y | Y | 
| double | 可能精度丢失 | 可能精度丢失 | 可能精度丢失 | 可能精度丢失 | 可能精度丢失 | Y | N | N | Y | Y | Y | Y | 
| decimal | 可能精度丢失 | 可能精度丢失 | 可能精度丢失 | 可能精度丢失 | 可能精度丢失 | 可能精度丢失 | N | N | Y | Y | Y | Y | 
| string | 支持数值字符串 | 支持数值字符串 | 支持数值字符串 | 支持数值字符串 | 支持数值字符串 | 支持数值字符串 | 支持Date字符串 | 支持Timestamp字符串 | 支持Bool字符串 | 支持数值字符串 | Y | Y | 
| OID | N | N | N | N | N | N | N | N | N | N | Y | Y | 
| boolean | Y | Y | Y | Y | Y | Y | N | N | Y | Y | Y | Y | 
| date | 可能溢出 | 可能溢出 | 可能溢出 | Y | 可能精度丢失 | 可能精度丢失 | Y | Y | N | Y | Y | Y | 
| timestamp | 可能溢出 | 可能溢出 | 可能溢出 | Y | 可能精度丢失 | 可能精度丢失 | Y | Y | N | Y | Y | Y | 
| binary | N | N | N | N | N | N | N | N | N | N | Y | Y | 
Note:
- 不兼容的数据类型发生转换时,原数据将转换为目标类型的零值。
- string 类型支持将数值字符串转换为 TINYINT、SMALLINT、INT、BIGINT、FLOAT、DOUBLE 等数值类型。如果转换发生溢出,则转换为 null。
- string 类型支持将"yyyy-MM-dd.HH:mm:ss"格式的日期字符串,转换为 DATE 或 TIMESTAMP 类型,格式不匹配时将转换为零值。
- boolean 类型转换为数值类型时,true 对应 1,false 对应 0。
- Flink SQL 中 DECIMAL(p,s) 支持最大精度为 38,数值超出精度表示范围时,视为数据类型不兼容。仅小数部分超出精度时,将舍弃小数部分。
