数据类型转换

数据类型转换参考

本文档描述了支持的数据库数据类型到目标Redis数据类型的默认转换。

通用ANSI SQL数据类型

源数据类型 HASH的目标数据类型 HASH示例
数组 不支持
bigint string 2147483648 将被保存为 '2147483648'
binary 字节字符串
基于连接器配置属性设置 binary.handling.mode 的字节或 base64 编码的字符串,或十六进制编码的字符串
binary.handling.mode = bytes 时,字符串 'hello' 将作为二进制字符串 '0x68656C6C6F' 添加到表中,将由 Debezium 转换为 'aGVsbG8AAAAAAAAAAAAAAAAAAAA=' 并存储在 Redis 目标数据库中为:'aGVsbG8AAAAAAAAAAAAAAAAAAAA='
位串 不支持
blob 字节字符串
根据连接器配置属性设置 binary.handling.mode,可以是字节或base64编码的字符串,或十六进制编码的字符串
binary.handling.mode = bytes 时,加载到表中的二进制图像文件将由Debezium转换为字节,并作为字节字符串存储在Redis目标数据库中
boolean string 布尔值:false 将被 Applier 转换为 0,并作为字符串 '0' 保存在 Redis 目标数据库中
char string 当PostgreSQL数据类型为char(14)时,'hello world'将被保存为'hello world   '
日期 字符串
映射到自纪元以来的毫秒数
PG字段值: '2021-01-29' 将被Debezium转换为整数 18656(自纪元以来的天数),然后转换为自纪元以来的毫秒数,并存储在Redis目标数据库中为: '1611878400000'
整数 字符串 2147483640 将被保存为 '2147483640'
interval 不支持
null 具有null值的字段将由Debezium作为null发送,并且不会存储在Redis目标数据库中
numeric string
Debezium 配置参数 decimal.handling.mode 决定了连接器如何映射十进制值。当 decimal.handling.mode = 'precision' 时,Debezium 接收到的二进制字符串将被转换为其对应的数值,并作为字符串存储在 Redis 目标数据库中
PG 字段值: 4521398.56 将被 Debezium 转换为二进制字符串 'GvMbUA==',然后转换为数值并存储在 Redis 目标数据库中为: '4521398.56'
smallint string 32767 将被保存为 '32767'
文本 字符串 '这是一个非常长的文本,用于PostgreSQL的文本列'
时间 字符串
映射到午夜过后的秒数
'14:23:46' 将被转换为 '51826000000'
PostgreSQL, Oracle, Cassandra: 时间戳
MySQL, SQL Server: 日期时间
字符串
映射到自纪元以来的毫秒.微秒。
SQL Server 日期时间格式: YYYY-MM-DD hh:mm:ss[.nnn],
范围: 1753-01-019999-12-31
PG 字段值: '2018-06-20 15:13:16.945104' 将被 Debezium 转换为 '1529507596945104'(微秒) 并将在 Redis 目标数据库中存储为 '1529507596945.104'
PosrgreSQL: timestamptz
Oracle: 带本地时区的时间戳
MySQL: 时间戳
字符串
转换为UTC并存储为自纪元以来的毫秒.微秒数
timetz 字符串
转换为UTC并存储为午夜过后的秒数
PG字段值: '14:23:46.12345' 将被Debezium转换为字符串 '12:23:46.12345Z' 并将在Redis目标数据库中存储为: '44638.345'
varbinary 字节字符串
字节或base64编码的字符串,或十六进制编码的字符串,基于连接器配置属性设置 binary.handling.mode
binary.handling.mode = bytes 时,字符串 'hello' 将作为二进制字符串 '0x68656C6C6F' 添加到表中,将由 Debezium 转换为 'aGVsbG8=' 并存储在 Redis 目标数据库中为:'aGVsbG8='
varchar string 'hello world' 将被保存为 'hello world'
xml 字符串
源数据类型 JSON的目标数据类型 JSON的示例
数组 不支持
bigint number 2147483648 将被保存为 2147483648
binary 字节字符串 binary.handling.mode = bytes 时,字符串 'hello' 将作为二进制字符串 '0x68656C6C6F' 添加到表中,将由 Debezium 转换为 'aGVsbG8AAAAAAAAAAAAAAAAAAAA=' 并存储在 Redis 目标数据库中为:'aGVsbG8AAAAAAAAAAAAAAAAAAAA='
位串 不支持
blob bytes string binary.handling.mode = bytes 时,加载到表中的二进制图像文件将被 Debezium 转换为字节,并作为字节字符串存储在 Redis 目标数据库中
boolean boolean 布尔值:true 将以布尔数据类型保存到 Redis 目标数据库中,值为 True
char string 当PostgreSQL数据类型为char(14)时,'hello world'将被保存为'hello world   '
日期 数字
映射到自纪元以来的毫秒数
PG字段值:2021-01-29 将被Debezium转换为整数18656(自纪元以来的天数),然后转换为自纪元以来的毫秒数,并存储在Redis目标数据库中为:1611878400000
整数 数字 2147483640 将被保存为 2147483640
interval 不支持
null 具有null值的字段将由Debezium作为null发送,并将以null值存储在Redis目标数据库中
numeric Debezium 配置参数 decimal.handling.mode 决定了连接器如何映射十进制值。当 decimal.handling.mode = 'precision' 时,Debezium 接收到的二进制字符串将被转换为其对应的数值,并作为数字存储在 Redis 目标数据库中。当 decimal.handling.mode = 'string' 时,Debezium 接收到的字符串将作为字符串存储在 Redis 目标数据库中。当 decimal.handling.mode = 'double' 时,Debezium 接收到的双精度值将作为数字存储在 Redis 目标数据库中。 decimal.handling.mode = string: PG 字段值: 4521398.56 将被 Debezium 作为字符串 '4521398.56' 接收,并将作为字符串存储在 Redis 目标数据库中: '4521398.56' 。
smallint number 32767 将被保存为 32767
文本 字符串
时间 数字
映射到午夜过后的秒数
'14:23:46' 将被转换为 51826000000
PostgreSQL, Oracle, Cassandra: 时间戳
MySQL, SQL Server: 日期时间
十进制
映射到自纪元以来的毫秒.微秒。
SQL Server 日期时间格式: YYYY-MM-DD hh:mm:ss[.nnn],
范围: 1753-01-019999-12-31
PG 字段值: '2018-06-20 15:13:16.945104' 将被 Debezium 转换为 '1529507596945104'(微秒) 并将在 Redis 目标数据库中存储为 `1529507596945.104
PosrgreSQL: timestamptz
Oracle: 带本地时区的时间戳
MySQL: 时间戳
数字
转换为UTC并存储为自纪元以来的毫秒.微秒数
timetz 数字
转换为UTC并存储为自纪元以来的毫秒.微秒数
PG字段值: '14:23:46.12345' 将被Debezium转换为字符串 '12:23:46.12345Z' 并将在Redis目标数据库中存储为: 44638.345
varbinary 字节字符串
字节或base64编码的字符串,或十六进制编码的字符串,基于连接器配置属性设置 binary.handling.mode
binary.handling.mode = bytes 时,字符串 'hello' 将作为二进制字符串 '0x68656C6C6F' 添加到表中,将由 Debezium 转换为 'aGVsbG8=' 并存储在 Redis 目标数据库中为:'aGVsbG8='
varchar string 'hello world' 将被保存为 'hello world’
xml 字符串

Cassandra 数据类型

源数据类型 HASH的目标数据类型 HASH示例
ascii 字符串
计数器(64位长整型) 字符串 2
日期 不支持
decimal 不支持
双精度 字符串 '1.007308023'
持续时间 不支持
float string 数字 -3.4E+38 将被 debezium 接收为 -3.4E38,然后由 Applier 转换为 -340000000000000000000000000000000000000,并最终以 '-340000000000000000000000000000000000000' 的形式保存在 Redis 目标数据库中。
frozen string {'10.10.11.1', '10.10.10.1', '10.10.12.1'} 将作为字符串保存在 Redis 目标数据库中:'{'10.10.11.1', '10.10.10.1', '10.10.12.1'}'
frozen udt string {'city': 'City','street': 'Street','streetno': 2,'zipcode': '02-212'} 将作为字符串保存在 Redis 目标数据库中:'{'city': 'City','street': 'Street','streetno': 2,'zipcode': '02-212'}'
inet 字符串
IPv4 和 IPv6 网络地址
IP 地址 4.35.221.243 将被 debezium 转换为 '/4.35.221.243' 并保存到 Redis 目标数据库中为 '/4.35.221.243'
list string 列表 ['New York', 'Paris','London','New York'] 将由debezium作为字符串数组发送:['New York', 'Paris','London','New York'] 并将作为字符串 "['New York', 'Paris','London','New York']" 保存在Redis目标数据库中
map string {'fruit' : 'Apple', 'band' : 'Beatles'} 将作为字符串保存在 Redis 目标数据库中:'{'fruit' : 'Apple', 'band' : 'Beatles'}'
set string 集合 {'y','n'} 将被保存到 Redis 目标数据库中,作为字符串 `'{'y','n'}'`
tinyint string
uuid string b9980b96-a85b-411c-b8e7-4be55c123793
元组 字符串 元组 { "field1": 1, "field2": "testing tuple", "field3": 2 } 将作为字符串保存在 Redis 目标数据库中:' { "field1": 1, "field2": "testing tuple", "field3": 2 }'
varint 不支持
源数据类型 JSON的目标数据类型 JSON的示例
ascii 字符串
计数器(64位长整型) 数字 2
日期 不支持
decimal 不支持
双精度 数字 1.007308023
持续时间 不支持
float number 数字 -3.4E+38 将被 debezium 接收为 -3.4E38 并将在 Redis 目标数据库中保存为 -1e+38
frozen array {'10.10.11.1', '10.10.10.1', '10.10.12.1'} 将作为数组保存在 Redis 目标数据库中:{'/10.10.11.1', '/10.10.10.1', '/10.10.12.1'}
frozen udt object {'city': 'City','street': 'Street','streetno': 2,'zipcode': '02-212'} 将作为字符串保存在Redis目标数据库中 将作为对象保存在Redis目标数据库中: {'city': 'City','street': 'Street','streetno': 2,'zipcode': '02-212'}
inet 字符串
IPv4 和 IPv6 网络地址
IP 地址 4.35.221.243 将被 debezium 转换为 '/4.35.221.243' 并保存到 Redis 目标数据库中为 '/4.35.221.243'
列表 数组 列表 ['New York', 'Paris','London','New York'] 将由debezium作为字符串数组发送:['New York', 'Paris','London','New York'] 并将作为数组保存在Redis目标数据库中:['New York', 'Paris','London','New York']
map object {'fruit' : 'Apple', 'band' : 'Beatles'} 将作为对象保存在Redis目标数据库中:{'fruit' : 'Apple', 'band' : 'Beatles'}
set array 集合 {'y','n'} 将被保存到 Redis 目标数据库中作为一个数组:{'y','n'}
tinyint
uuid string b9980b96-a85b-411c-b8e7-4be55c123793
元组 对象 元组 { "field1": 1, "field2": "testing tuple", "field3": 2 } 将作为对象保存在 Redis 目标数据库中:{ "field1": 1, "field2": "testing tuple", "field3": 2 }
varint 不支持

MySQL 和 MariaDB 数据类型

源数据类型 用于HASH的源数据类型 HASH示例
enum string MySQL枚举值'cat'将存储在Redis目标数据库中为'cat'
geometry 不支持
geometrycollection 不支持
json string {"pid": 102, "name": "name2"}
linestring 不支持
multilinestring 不支持
多点 不支持
multypolygon 不支持
多边形 不支持
set string '1,2,3' 将存储在 Redis 目标数据库中为:'1,2,3'
year string '55' 将作为 2055 存储在数据库中,并由 Debezium 作为 int32 数据类型发送,值为 2055。它也将作为字符串 '2055' 存储在 Redis 目标数据库中
源数据类型 JSON的目标数据类型 JSON的示例
enum string MySQL枚举值'cat'将存储在Redis目标数据库中为'cat'
geometry 不支持
geometrycollection 不支持
json object {"pid": 102, "name": "name2"}
linestring 不支持
multilinestring 不支持
多点 不支持
multypolygon 不支持
多边形 不支持
set string '1,2,3' 将会被存储在 Redis 目标数据库中,形式为:'1,2,3'
年份 数字 '55' 将作为 2055 存储在数据库中,并由 Debezium 作为 int32 数据类型发送,值为 2055。它也将作为数字 2055 存储在 Redis 目标数据库中

Oracle 数据类型

源数据类型 用于HASH的源数据类型 HASH示例
bfile 不支持
binary_double string '1.7E+308'
binary_float string '3.40282E38'
clob string 大块文本
float,real,double precision
real = FLOAT(63),double precision = FLOAT(126).
string 当Debezium配置参数decimal.handling.mode = 'double'时,值-3.402E+38将作为字符串'-340200000000000000000000000000000000000'保存在Redis目标数据库中。
long raw 不支持
nchar string - 是能够存储Unicode字符的Unicode数据类型 字符串 'testing hebrew שלום' 将被存储在Redis目标数据库中为 'testing hebrew \xd7\xa9\xd7\x9c\xd7\x95\xd7\x9d         '
nclob 不支持
number(p,s) string '10385274000.32'
nvarchar 字符串 - 是能够存储Unicode字符的Unicode数据类型 字符串 testing hebrew שלום' 将被存储在Redis目标数据库中为 'testing hebrew \xd7\xa9\xd7\x9c\xd7\x95\xd7\x9d'
原始数据 不支持
行ID 字符串 AAAR1QAAOAAAACFAAA
带时区的时间戳 字符串 '2021-12-30 14:23:46' 将被 Debezium 转换为字符串 '2021-12-30T14:23:46+02:00' 并作为字符串存储在 Redis 目标数据库中:'1611878400000',这是自纪元以来的毫秒数
urowid 不支持
源数据类型 JSON的目标数据类型 JSON的示例
bfile 不支持
binary_double number 1.7E+308
binary_float number 3.40282E38
clob string 大块文本
float,real,double precision
real = FLOAT(63),double precision = FLOAT(126).
number/string 当Debezium配置参数decimal.handling.mode = 'double'时,值-3.402E+38将作为数字-340200000000000000000000000000000000000保存在Redis目标数据库中
long raw 不支持
nchar 字符串 - 是能够存储Unicode字符的Unicode数据类型 字符串 'testing hebrew שלום' 将被存储在Redis目标数据库中为 'testing hebrew \xd7\xa9\xd7\x9c\xd7\x95\xd7\x9d         '
nclob 不支持
数字(p,s) 数字 10385274000.32
nvarchar 字符串 - 是一种可以存储Unicode字符的Unicode数据类型 字符串 testing hebrew שלום' 将被存储在Redis目标数据库中为 'testing hebrew \xd7\xa9\xd7\x9c\xd7\x95\xd7\x9d'
原始数据 不支持
行ID 字符串 AAAR1QAAOAAAACFAAA
带时区的时间戳 数字 '2021-12-30 14:23:46' 将被 Debezium 转换为字符串 '2021-12-30T14:23:46+02:00' 并作为数字存储在 Redis 目标数据库中:1611878400000,这是自纪元以来的毫秒数
urowid 不支持

PostgreSQL 数据类型

源数据类型 用于HASH的源数据类型 HASH示例
box 不支持
cidr string
IPv4 和 IPv6 网络地址。
'4.35.221.243/32'
圆形 不支持
域名 字符串
hstore string '{"pages":"368","author":"Katherine Dunn","category":"fiction"}'
inet 字符串
IPv4 和 IPv6 网络地址
'4.35.221.243'
json string "{"guid":  "9c36adc1-7fb5-4d5b-83b4-90356a46061a",
"name": "Angela Barton",
"is_active": null,
"company": "Magnafone"
"address": "178 Howard Place, Gulf, Washington,702",
"registered": "2009-11-07T08:53:22 +08:00",
"latitude": 19.793713,
"longitude": 86.513373,
"tags": ["enim","aliquip","qui" ]}"
line 不支持
macaddr 字符串
MAC地址
'08:00:2b:01:02:03'
money string decimal.handling.mode = 'double' 时,金额值 -8793780.01 将被 Debezium 接收为 -8793780.01,数据类型为 double,并将以字符串形式存储在 Redis 目标数据库中,即 '-8793780.01'
路径 不支持
不支持
多边形 不支持
uuid string 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'
源数据类型 JSON的目标数据类型 JSON的示例
box 不支持
cidr string
IPv4 和 IPv6 网络地址。
'4.35.221.243/32'
圆形 不支持
域名 字符串
hstore 字符串 '{"pages":"368","author":"Katherine Dunn","category":"fiction"}
inet 字符串
IPv4 和 IPv6 网络地址
'4.35.221.243'
json object {"guid":  "9c36adc1-7fb5-4d5b-83b4-90356a46061a",
"name": "Angela Barton",
"is_active": null,
"company": "Magnafone"
"address": "178 Howard Place, Gulf, Washington,702",
"registered": "2009-11-07T08:53:22 +08:00",
"latitude": 19.793713,
"longitude": 86.513373,
"tags": ["enim","aliquip","qui" ]}
line 不支持
macaddr 字符串
MAC地址
'08:00:2b:01:02:03'
money string decimal.handling.mode = 'double' 时,金额值 -8793780.01 将被 Debezium 接收为 -8793780.01,数据类型为 double,并将作为数字 -8793780.01 存储在 Redis 目标数据库中
路径 不支持
不支持
多边形 不支持
uuid string 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'

SQL Server 数据类型

源数据类型 用于HASH的源数据类型 HASH示例
bit string 当值 >0 时,它将被 Debezium 转换为 true 并保存到 Redis 目标数据库中为 '1',而当值 = 0 时,它将被 Debezium 转换为 false 并保存到 Redis 目标数据库中为 '0'
datetime2 字符串
表示自纪元以来的毫秒数,不包括时区信息。
当Debezium配置参数 time.precision.mode='connect' 时,值 '2018-06-20 15:13:16.945104' 将被Debezium转换为值 '1529507596945104' 并作为字符串 '1529507596945.104' 保存在Redis目标数据库中
datetimeoffset string 当Debezium配置参数decimal.handling.mode = 'precision'时,datetimeoffset数据类型值'12-10-25 12:32:10 +01:00'将被转换为字符串'2025-12-10T12:32:10+01:00',并将作为1765366330000保存在Redis目标数据库中
decimal,float,real 字符串
值范围: decimal-10^38 +1 到 10^38,float-1.79E+308 到 -2.23E-308, 0 和 2.23E-308 到 1.79E+308,real:- 3.40E + 38 到 -1.18E - 38, 0 和 1.18E - 38 到 3.40E + 38
当 Debezium 配置参数 decimal.handling.mode = 'precision' 时,值 '-3.402E+38' 将被 Debezium 转换为二进制字符串 '/wAP3QCzc/wpiIGe8AAAAAA=' 并将在 Redis 目标数据库中保存为字符串 '-340200000000000000000000000000000000000'
image string
可变长度的二进制数据,范围从0到2,147,483,647字节。
money 字符串
值范围:-922,337,203,685,477,5808 到 922,337,203,685,477.5807
当 Debezium 配置参数 decimal.handling.mode = 'precision' 时,值 922337203685477.5807 将被 Debezium 转换为二进制字符串 'f/////////8=',并作为字符串 '922337203685477.5807' 保存在 Redis 目标数据库中。
nchar 字符串 - 固定大小的字符串数据,可以存储Unicode字符的Unicode数据类型
nvarchar 字符串 - 可变大小的字符串数据,可以存储Unicode字符的Unicode数据类型
numeric string
值范围 - 10^38 +1 到 10^38
当Debezium配置参数 time.precision.mode = 'connect'decimal.handling.mode = 'precision' 时,值 1.00E +33 将被Debezium转换为二进制字符串 'SztMqFqGw1MAAAAAAAAAAA==' 并作为字符串 '1000000000000000000000000000000000' 保存在Redis目标数据库中
rowversion 字符串
数据类型,用于在数据库中公开自动生成的唯一二进制数。rowversion 通常用作版本标记表行的机制。
0x00000000000007D0
smalldatetime 字符串
表示自纪元以来的毫秒数,不包括时区信息。
'2018-06-20 15:13:16' 将被 Debezium 转换为 1529507580000 毫秒自纪元以来的时间,并将以字符串 '1529507580000' 的形式保存在 Write-behind 中。
秒数:16 将不会包含在转换中,也不会保存在 Redis 目标数据库中
smallmoney 字符串
值范围: - 214,748.3648 到 214,748.3647
当Debezium配置参数 decimal.handling.mode = 'string' 时,值 -214748.3648 将被Debezium转换为字符串 '-214748.3648' 并保存到Redis目标数据库中为 '-214748.3648'
空间几何类型 不支持
空间地理类型 不支持
表格 不支持
文本 可变长度的Unicode数据
唯一标识符 字符串 06BEEF00-F859-406B-9A60-0A56AB81A97
源数据类型 JSON的目标数据类型 JSON的示例
bit boolean 当值 >0 时,Debezium 会将其转换为 true 并保存到 Redis 目标数据库中为 True,而当值 = 0 时,Debezium 会将其转换为 false 并保存到 Redis 目标数据库中为 False
datetime2 数字
表示自纪元以来的毫秒数,不包括时区
当Debezium配置参数 time.precision.mode='connect' 时,值 '2018-06-20 15:13:16.945104' 将被Debezium转换为值 '1529507596945104' 并作为数字 1529507596945.104 保存在Redis目标数据库中
datetimeoffset number 当Debezium配置参数 decimal.handling.mode = 'precision' 时,datetimeoffset 数据类型的值 '12-10-25 12:32:10 +01:00' 将被转换为字符串 '2025-12-10T12:32:10+01:00' 并作为字符串 1765366330000 保存在 Redis 目标数据库中
decimal,float,real number/string 当Debezium配置参数 decimal.handling.mode = 'precision' 时,值 '-3.402E+38' 将被Debezium转换为二进制字符串 '/wAP3QCzc/wpiIGe8AAAAAA=',并将作为数字 -340200000000000000000000000000000000000 保存在Redis目标数据库中
图像 字符串
money 根据decimal.handling.mode的值,可以是数字或字符串 当Debezium配置参数decimal.handling.mode = 'precision'时,值922337203685477.5807将被Debezium转换为二进制字符串'f/////////8=',并作为数字922337203685477.5807保存在Redis目标数据库中
nchar 字符串
nvarchar 字符串 - 可变大小的字符串数据,可以存储Unicode字符的Unicode数据类型
numeric number 当Debezium配置参数 time.precision.mode = 'connect'decimal.handling.mode = 'precision' 时,值 1.00E +33 将被Debezium转换为二进制字符串 'SztMqFqGw1MAAAAAAAAAAA==' 并将在Redis目标数据库中保存为数字 1000000000000000000000000000000000
rowversion 字符串
数据类型,用于在数据库中公开自动生成的唯一二进制数。rowversion 通常用作版本标记表行的机制。
0x00000000000007D0
smalldatetime 数字
表示自纪元以来的毫秒数,不包括时区信息。
'2018-06-20 15:13:16' 将被 Debezium 转换为 1529507580000 毫秒自纪元以来的时间,并将以数字 1529507580000 的形式保存在 Write-behind 中。
秒数:16 将不包括在转换中,也不会保存在 Redis 目标数据库中
smallmoney number 当Debezium配置参数 decimal.handling.mode = 'string' 时,值 -214748.3648 将被Debezium转换为字符串 '-214748.3648' 并将在Redis目标数据库中保存为 '-214748.3648'
空间几何类型 不支持
空间地理类型 不支持
表格 不支持
文本
唯一标识符 字符串 06BEEF00-F859-406B-9A60-0A56AB81A97

* 带有“不支持”数据类型的字段将不会出现在目标哈希中。

RATE THIS PAGE
Back to top ↑