支持的数据源
- 表/文件迁移:适用于数据入湖和数据上云场景下,表或文件级别的数据迁移,请参见表/文件迁移支持的数据源类型。
- 整库迁移:适用于数据入湖和数据上云场景下,离线或自建数据库整体迁移场景,请参见整库迁移支持的数据源类型。
- 另外,本章还列举了一些常见数据库迁移时所支持的数据类型,请参见开源MySQL数据库迁移时支持的数据类型、Oracle数据库迁移时支持的数据类型和SQL Server数据库迁移时支持的数据类型。
表/文件迁移支持的数据源类型
表/文件迁移可以实现表或文件级别的数据迁移。
数据源分类 |
源端数据源 |
对应的目的端数据源 |
说明 |
---|---|---|---|
数据仓库 |
数据仓库服务(DWS) |
|
不支持DWS物理机纳管模式。 |
数据湖探索(DLI) |
- |
||
Hadoop |
MRS HDFS |
|
|
MRS HBase |
|||
MRS Hive |
|||
FusionInsight HDFS |
|
|
|
FusionInsight HBase |
|||
FusionInsight Hive |
|||
Apache HBase |
|
|
|
Apache Hive |
|||
Apache HDFS |
|||
对象存储 |
对象存储服务(OBS) |
|
对象存储服务之间的迁移,推荐使用对象存储迁移服务OMS。 |
文件系统 |
FTP |
|
|
SFTP |
|||
HTTP |
Hadoop:MRS HDFS |
||
关系型数据库 |
云数据库 MySQL |
|
|
云数据库 PostgreSQL |
|||
云数据库 SQL Server |
|||
MySQL |
|
||
PostgreSQL |
|||
Microsoft SQL Server |
|||
Oracle |
|||
SAP HANA |
|
SAP HANA数据源存在如下约束:
|
|
分库 |
|
分库数据源不支持作为目的端。 |
|
NoSQL |
分布式缓存服务(DCS) |
Hadoop:MRS HDFS,MRS HBase,MRS Hive |
除了表格存储服务(CloudTable)外,其他NoSQL数据源不支持作为目的端。 |
Redis |
|||
文档数据库服务(DDS) |
|||
MongoDB |
|||
表格存储服务(CloudTable) |
|
||
Cassandra |
|
||
消息系统 |
Apache Kafka |
搜索:云搜索服务(CSS) |
消息系统不支持作为目的端。 |
DMS Kafka |
|||
MRS Kafka |
|
|
|
搜索 |
Elasticsearch |
|
Elasticsearch仅支持非安全模式。 |
云搜索服务(CSS) |
导入数据到CSS推荐使用Logstash。 |
上表中非云服务的数据源,例如MySQL,既可以支持用户本地数据中心自建的MySQL,也可以是用户在ECS上自建的MySQL,还可以是第三方云的MySQL服务。
整库迁移支持的数据源类型
整库迁移适用于将本地数据中心或在ECS上自建的数据库,同步到云上的数据库服务或大数据服务中,适用于数据库离线迁移场景,不适用于在线实时迁移。
数据集成支持整库迁移的数据源如表2所示。
数据源分类 |
数据源 |
读取 |
写入 |
说明 |
---|---|---|---|---|
数据仓库 |
数据仓库服务(DWS) |
支持 |
支持 |
- |
FusionInsight LibrA |
支持 |
不支持 |
- |
|
Hadoop (仅支持本地存储,不支持存算分离场景,不支持Ranger场景,不支持ZK开启SSL场景) |
MRS HBase |
支持 |
支持 |
整库迁移仅支持导出到MRS HBase。
建议使用的版本:
|
MRS Hive |
支持 |
支持 |
整库迁移仅支持导出到关系型数据库。
暂不支持2.x版本,建议使用的版本:
|
|
FusionInsight HBase |
支持 |
不支持 |
建议使用的版本:
|
|
FusionInsight Hive |
支持 |
不支持 |
整库迁移仅支持导出到关系型数据库。
暂不支持2.x版本,建议使用的版本:
|
|
Apache HBase |
支持 |
不支持 |
建议使用的版本:
|
|
Apache Hive |
支持 |
不支持 |
整库迁移仅支持导出到关系型数据库。
暂不支持2.x版本,建议使用的版本:
|
|
关系数据库 |
云数据库 MySQL |
支持 |
支持 |
不支持OLTP到OLTP迁移,此场景推荐通过数据复制服务DRS进行迁移。 |
云数据库 PostgreSQL |
支持 |
支持 |
||
云数据库 SQL Server |
支持 |
支持 |
||
MySQL |
支持 |
不支持 |
||
PostgreSQL |
支持 |
不支持 |
||
Microsoft SQL Server |
支持 |
不支持 |
||
Oracle |
支持 |
不支持 |
||
SAP HANA |
支持 |
不支持 |
|
|
MYCAT |
支持 |
不支持 |
- |
|
达梦数据库 DM |
支持 |
不支持 |
仅支持导出到DWS、Hive |
|
NoSQL |
分布式缓存服务(DCS) |
不支持 |
支持 |
仅支持MRS到DCS迁移。 |
文档数据库服务(DDS) |
支持 |
支持 |
仅支持DDS和MRS之间迁移。 |
|
表格存储服务(CloudTable) |
支持 |
支持 |
- |
开源MySQL数据库迁移时支持的数据类型
源端为开源MySQL数据库,目的端为Hive、DWS时,支持的数据类型如下:
类别 |
类型 |
简要释义 |
存储格式示例 |
Hive |
DWS |
---|---|---|---|---|---|
字符串 |
CHAR(M) |
固定长度的字符串是以长度为1到255之间个字符长度(例如:CHAR(5)),存储右空格填充到指定的长度。 限定长度不是必需的,它会默认为1。 |
‘a’或‘aaaaa’ |
CHAR |
CHAR |
VARCHAR(M) |
可变长度的字符串是以长度为1到255之间字符数(高版本的MySQL超过255); 例如: VARCHAR(25). 创建VARCHAR类型字段时,必须定义长度。 |
‘a’或‘aaaaa’ |
VARCHAR |
VARCHAR |
|
数值 |
DECIMAL(M,D) |
非压缩浮点数不能是无符号的。在解包小数,每个小数对应于一个字节。 定义显示长度(M)和小数(D)的数量是必需的。 NUMERIC是DECIMAL的同义词。 |
52.36 |
DECIMAL |
D为0时对应BIGINT D不为0时对应NUMBERIC |
NUMBERIC |
与 DECIMAL 相同 |
- |
DECIMAL |
NUMBERIC |
|
INTEGER |
一个正常大小的整数,可以带符号。如果是有符号的,它允许的范围是从-2147483648到2147483647。 如果是无符号,允许的范围是从0到4294967295。 可以指定多达11位的宽度。 |
5236 |
INT |
INTEGER |
|
INTEGER UNSIGNED |
INTEGER 的无符号形式 |
- |
BIGINT |
INTEGER |
|
INT |
与INTEGER相同 |
5236 |
INT |
INTEGER |
|
INT UNSIGNED |
与INTEGER UNSIGNED相同 |
- |
BIGINT |
INTEGER |
|
BIGINT |
一个大的整数,可以带符号。如果有符号,允许范围为-9223372036854775808到9223372036854775807。如果无符号,允许的范围是从0到18446744073709551615. 可以指定最多20位的宽度。 |
5236 |
BIGINT |
BIGINT |
|
BIGINT UNSIGNED |
BIGINT的无符号形式 |
- |
BIGINT |
BIGINT |
|
MEDIUMINT |
一个中等大小的整数,可以带符号。如果有符号,允许范围为-8388608至8388607。 如果无符号,允许的范围是从0到16777215,可以指定最多9位的宽度。 |
-128、127 |
INT |
INTEGER |
|
MEDIUMINT UNSIGNED |
MEDIUMINT的无符号形式 |
- |
BIGINT |
INTEGER |
|
TINYINT |
一个非常小的整数,可以带符号。如果是有符号,它允许的范围是从-128到127。 如果是无符号,允许的范围是从0到255,可以指定多达4位数的宽度。 |
100 |
TINYINT |
SMALLINT |
|
TINYINT UNSIGNED |
TINYINT的无符号形式 |
- |
TINYINT |
SMALLINT |
|
BOOL |
MySQL的bool实际上就是tinyint(1) |
-128、127 |
SMALLINT |
BYTEA |
|
SMALLINT |
一个小的整数,可以带符号。如果有符号,允许范围为-32768至32767。 如果无符号,允许的范围是从0到65535,可以指定最多5位的宽度。 |
9999 |
SMALLINT |
SMALLINT |
|
SMALLINT UNSIGNED |
SMALLINT的无符号形式 |
- |
INT |
SMALLINT |
|
REAL |
同DOUBLE |
- |
DOUBLE |
- |
|
FLOAT(M,D) |
不能使用无符号的浮点数字。可以定义显示长度(M)和小数位数(D)。这不是必需的,并且默认为10,2。其中2是小数的位数,10是数字(包括小数)的总数。小数精度可以到24个浮点。 |
52.36 |
FLOAT |
FLOAT4 |
|
DOUBLE(M,D) |
不能使用无符号的双精度浮点数。可以定义显示长度(M)和小数位数(D)。 这不是必需的, 默认为16,4,其中4是小数的位数。小数精度可以达到53位的DOUBLE。 REAL是DOUBLE同义词。 |
52.36 |
DOUBLE |
FLOAT8 |
|
DOUBLE PRECISION |
与DOUBLE相似 |
52.3 |
DOUBLE |
FLOAT8 |
|
位 |
BIT(M) |
存储位值的BIT类型。BIT(M)可以存储多达M位的值,M的范围在1到64之间。 |
B'1111100' B'1100' |
TINYINT |
BYTEA |
日期时间 |
DATE |
以YYYY-MM-DD格式的日期,在1000-01-01和9999-12-31之间。 例如,1973年12月30日将被存储为1973-12-30。 |
1999-10-01 |
DATE |
TIMESTAMP |
TIME |
用于存储时、分、秒信息 |
'09:10:21'或'9:10:21' |
不支持(String) |
TIME |
|
DATETIME |
日期和时间组合以YYYY-MM-DD HH:MM:SS格式,在1000-01-01 00:00:00 到9999-12-31 23:59:59之间。例如,1973年12月30日下午3:30,会被存储为1973-12-30 15:30:00。 |
'1973-12-30 15:30:00' |
TIMESTAMP |
TIMESTAMP |
|
TIMESTAMP |
1970年1月1日午夜之间的时间戳,到2037的某个时候。这看起来像前面的DATETIME格式,无需只是数字之间的连字符; 1973年12月30日下午3点30分将被存储为19731230153000(YYYYMMDDHHMMSS)。 |
19731230153000 |
TIMESTAMP |
TIMESTAMP |
|
YEAR(M) |
以2位或4位数字格式来存储年份。如果长度指定为2(例如YEAR(2)),年份就可以为1970至2069(70〜69)。如果长度指定为4,年份范围是1901-2155,默认长度为4。 |
2000 |
不支持(String) |
不支持 |
|
多媒体(二进制) |
BINARY(M) |
字节数为M,允许长度为0-M的变长二进制字符串,字节数为值得长度加1 |
0x2A3B4058 (二进制数据) |
不支持 |
BYTEA |
VARBINARY(M) |
字节数为M,允许长度为0-M的定长二进制字符串 |
0x2A3B4059 (二进制数据) |
不支持 |
BYTEA |
|
TEXT |
字段的最大长度是65535个字符。 TEXT是“二进制大对象”,并用来存储大的二进制数据,如图像或其他类型的文件。 |
0x5236(二进制数据) |
不支持 |
不支持 |
|
TINYTEXT |
0-255字节短文本二进制字符串 |
- |
- |
不支持 |
|
MEDIUMTEXT |
0-167772154字节中等长度文本二进制字符串 |
- |
- |
不支持 |
|
LONGTEXT |
0-4294967295字节极大长度文本二进制字符串 |
- |
- |
不支持 |
|
BLOB |
字段的最大长度是65535个字符。 BLOB是“二进制大对象”,并用来存储大的二进制数据,如图像或其他类型的文件。BLOB大小写敏感。 |
0x5236(二进制数据) |
不支持 |
BYTEA |
|
TINYBLOB |
0-255字节短文本二进制字符串 |
- |
- |
BYTEA |
|
MEDIUMBLOB |
0-167772154字节中等长度文本二进制字符串 |
- |
- |
BYTEA |
|
LONGBLOB |
0-4294967295字节极大长度文本二进制字符串 |
0x5236(二进制数据) |
不支持 |
BYTEA |
|
特殊类型 |
SET |
SET是一个字符串对象,可以有零或多个值,其值来自表创建时规定的允许的一列值。指定包括多个SET成员的SET列值时各成员之间用逗号(‘,’)间隔开。这样SET成员值本身不能包含逗号。 |
- |
- |
不支持 |
JSON |
- |
- |
不支持 |
不支持(TEXT) |
|
ENUM |
当定义一个ENUM,要创建它的值的列表,这些是必须用于选择的项(也可以是NULL)。例如,如果想要字段包含“A”或“B”或“C”,那么可以定义为ENUM为 ENUM(“A”,“B”,“C”)也只有这些值(或NULL)才能用来填充这个字段。 |
- |
不支持 |
不支持 |
Oracle数据库迁移时支持的数据类型
源端为Oracle数据库,目的端为Hive、DWS时,支持的数据类型如下:
类别 |
类型 |
简要释义 |
Hive |
DWS |
---|---|---|---|---|
字符串 |
char |
定长字符串,会用空格填充来达到最大长度。 |
CHAR |
CHAR |
nchar |
包含unicode格式数据的定长字符串。 |
CHAR |
CHAR |
|
varchar2 |
是VARCHAR的同义词。这是一个变长字符串,与CHAR类型不同,它不会用空格将字段或变量填充至最大长度。 |
VARCHAR |
VARCHAR |
|
nvarchar2 |
包含unicode格式数据的变长字符串。 |
VARCHAR |
VARCHAR |
|
数值 |
number |
能存储精度最多高达38位的数字 |
DECIMAL |
NUMERIC |
binary_float |
2位单精度浮点数 |
FLOAT |
FLOAT8 |
|
binary_double |
64位双精度浮点数 |
DOUBLE |
FLOAT8 |
|
long |
能存储最多2GB的字符数据 |
不支持 |
不支持 |
|
日期时间 |
date |
7字节的定宽日期/时间数据类型,其中包含7个属性:世纪、世纪中的哪一年、月份、月中的哪一天、小时、分钟、秒。 |
DATE |
TIMESTAMP |
timestamp |
7字节或11字节的定宽日期/时间数据类型,它包含小数秒 |
TIMESTAMP |
TIMESTAMP |
|
timestamp with time zone |
3字节的timestamp,提供了时区支持。 |
TIMESTAMP |
TIME WITH TIME ZONE |
|
timestamp with local time zone |
7字节或11字节的定宽日期/时间数据类型,在数据的插入和读取时会发生时区转换 |
TIMESTAMP |
不支持(TEXT) |
|
interval year to month |
5字节的定宽数据类型,用于存储一个时段。 |
不支持 |
不支持(TEXT) |
|
interval day to second |
11字节的定宽数据类型,用于存储一个时段。将时段存储为天/小时/分钟/秒数,还可以有9位小数秒。 |
不支持 |
不支持(TEXT) |
|
多媒体(二进制) |
raw |
一种变长二进制数据类型,采用这种数据类型存储的数据不会发生字符集转换。 |
不支持 |
不支持 |
long raw |
能存储多达2GB的二进制信息 |
不支持 |
不支持 |
|
blob |
能够存储最多4GB的数据 |
不支持 |
不支持 |
|
clob |
在Oracle 10g及以后的版本中允许存储最多(4GB)×(数据库块大小)字节的数据。CLOB包含要进行字符集转换的信息。这种数据类型很适合存储纯文本信息。 |
不支持 |
不支持 |
|
nclob |
这种类型能够存储最多4GB的数据。当字符集发生转换时,这种类型会受到影响。 |
不支持 |
不支持 |
|
bfile |
可以在数据库列中存储一个oracle目录对象和一个文件名,我们可以通过它来读取这个文件。 |
不支持 |
不支持 |
|
其他类型 |
rowid |
实际上是数据库表中行的地址,它有10字节长。 |
不支持 |
不支持 |
urowid |
是一个通用的rowid,没有固定的rowid的表。 |
不支持 |
不支持 |
SQL Server数据库迁移时支持的数据类型
源端为SQL Server数据库,目的端为Hive、DWS、Oracle时,支持的数据类型如下:
类别 |
类型 |
简要释义 |
Hive |
DWS |
Oracle |
---|---|---|---|---|---|
字符串数据类型 |
char |
定长字符串,会用空格填充来达到最大长度。 |
CHAR |
CHAR |
CHAR |
nchar |
包含unicode格式数据的定长字符串。 |
CHAR |
CHAR |
CHAR |
|
varchar |
可变长度的字符串是以长度为1到255之间字符数(高版本的MySQL超过255); 例如: VARCHAR(25);创建VARCHAR类型字段时,必须定义长度。 |
VARCHAR |
VARCHAR |
VARCHAR |
|
nvarchar |
与varchar类似,存储可变长度Unicode字符数据。 |
VARCHAR |
VARCHAR |
VARCHAR |
|
数值数据类型 |
int |
int存储在4个字节中,其中一个二进制位表示符号位,其它31个二进制位表示长度和大小,可以表示-2的31次方~2的31次方-1范围内的所有整数。 |
INT |
INTEGER |
INT |
bigint |
bigint存储在8个字节中,其中一个二进制位表示符号位,其它63个二进制位表示长度和大小,可以表示-2的63次方~2的63次方-1范围内的所有整数。 |
BIGINT |
BIGINT |
NUMBER |
|
smallint |
smallint类型的数据占用了两个字节的存储空间,其中一个二进制位表示整数值的正负号,其它15个二进制位表示长度和大小,可以表示-2的15次方~2的15次方-1范围内的所有整数。 |
SMALLINT |
SMALLINT |
NUMBER |
|
tinyint |
tinyint类型的数据占用了一个字节的存储空间,可以表示0~255范围内的所有整数。 |
TINYINT |
TINYINT |
NUMBER |
|
real |
可以存储正的或者负的十进制数值。 |
DOUBLE |
FLOAT4 |
NUMBER |
|
float |
其中为用于存储float数值尾数的位数(以科学计数法表示),因此可以确定精度和存储大小。 |
FLOAT |
FLOAT8 |
binary_float |
|
decimal |
带固定精度和小数位数的数值数据类型。 |
DECIMAL |
NUMERIC |
NUMBER |
|
numeric |
用于存储零、正负定点数 |
DECIMAL |
NUMERIC |
NUMBER |
|
日期时间数据类型 |
date |
存储用字符串表示的日期数据。 |
DATE |
TIMESTAMP |
DATE |
time |
以字符串形式记录一天的某个时间。 |
不支持(String) |
TIME |
不支持 |
|
datetime |
用于存储时间和日期数据。 |
TIMESTAMP |
TIMESTAMP |
不支持 |
|
datetime2 |
datetime的扩展类型,其数据范围更大,默认的最小精度最高,并具有可选的用户定义的精度。 |
TIMESTAMP |
TIMESTAMP |
不支持 |
|
smalldatetime |
smalldatetime类型与datetime类型相似,只是其存储范围是从1900年1月1日到2079年6月6日,当日期时间精度较小时,可以使用smalldatetime,该类型数据占用4个字节的存储空间。 |
TIMESTAMP |
TIMESTAMP |
不支持 |
|
timestamp |
时间戳数据类型 |
TIMESTAMP |
TIMESTAMP |
TIMESTAMP |
|
datetimeoffset |
用于定义一个采用24小时制与日期相组合并可识别时区的时间。 |
不支持(String) |
TIMESTAMP |
不支持 |
|
多媒体数据类型 (二进制) |
text |
用于存储文本数据。 |
不支持(String) |
不支持(String) |
不支持 |
netxt |
与text类型作用相同,为长度可变的非Unicode数据。 |
不支持(String) |
不支持(String) |
不支持 |
|
image |
长度可变的二进制数据,用于存储照片、目录图片或者图画。 |
不支持(String) |
不支持(String) |
不支持 |
|
binary |
长度为n个字节的固定长度二进制数据,其中n是从1~8000的值。 |
不支持(String) |
不支持(String) |
不支持 |
|
varbinary |
可变长度二进制数据。 |
不支持(String) |
不支持(String) |
不支持 |
|
货币数据类型 |
money |
用于存储货币值 |
不支持(String) |
不支持(String) |
不支持 |
smallmoney |
与money类型相似,输入数据时在前面加上一个货币符号,如人民币为¥或其它定义的货币符号。 |
不支持(String) |
不支持(String) |
不支持 |
|
位数据类型 |
bit |
位数据类型,只取0或1为值,长度1字节。bit值经常当作逻辑值用于判断true(1)或false(0),输入非0值时系统将其替换为1。 |
不支持 |
不支持 |
不支持 |
其他数据类型 |
rowversion |
每个数据都有一个计数器,当对数据库中包含rowversion列的表执行插入或者更新操作时,该计数器数值就会增加。 |
不支持 |
不支持 |
不支持 |
uniqueidentifier |
16字节的GUID(Globally Unique Identifier,全球唯一标识符),是Sql Server根据网络适配器地址和主机CPU时钟产生的唯一号码,其中,每个为都是0~9或a~f范围内的十六进制数字。 |
不支持 |
不支持 |
不支持 |
|
cursor |
游标数据类型。 |
不支持 |
不支持 |
不支持 |
|
sql_variant |
用于存储除文本,图形数据和timestamp数据外的其它任何合法的Sql Server数据,可以方便Sql Server的开发工作。 |
不支持 |
不支持 |
不支持 |
|
table |
用于存储对表或视图处理后的结果集。 |
不支持 |
不支持 |
不支持 |
|
xml |
存储xml数据的数据类型。可以在列中或者xml类型的变量中存储xml实例。存储的xml数据类型表示实例大小不能超过2GB。 |
不支持 |
不支持 |
不支持 |