华为云用户手册

  • 约束限制 作业源端开启“使用SQL语句”参数时不支持配置转换器。 如果在字段映射界面,CDM通过获取样值的方式无法获得所有列(例如从HBase/CloudTable/MongoDB导出数据时,CDM有较大概率无法获得所有列),则可以单击后选择“添加新字段”来手动增加,确保导入到目的端的数据完整。 关系数据库、Hive、MRS Hudi及DLI做源端时,不支持获取样值功能。 SQLServer作为目的端数据源时,不支持timestamp类型字段的写入,需修改为其他时间类型字段写入(如datetime)。 当作业源端为OBS、迁移CSV文件时,并且配置“解析首行为列名”参数的场景下显示列名。 当使用二进制格式进行文件到文件的迁移时,没有配置字段转换器这一步。 自动创表场景下,需在目的端表中提前手动新增字段,再在字段映射里新增字段。 添加完字段后,新增的字段在界面不显示样值,不会影响字段值的传输,CDM会将字段值直接写入目的端。 如果字段映射关系不正确,您可以通过拖拽字段、单击对字段批量映射两种方式来调整字段映射关系。 创建表达式转换器时,表达式的功能是对该字段的数据进行处理,故不建议使用时间宏,如需使用,请根据以下场景处理(源端是文件类的配置时仅支持方式一): 方式一:新建表达式转换器时,表达式需要用''包围。 ${dateformat(yyyy-MM-dd)}不加引号使用时,解析成2017-10-16之后还会进行运算,将'-'识别为减号,导致结果为1991,须使用'${dateformat(yyyy-MM-dd)}',即'2017-10-16'。 图2 使用''包围表达式 方式二:源字段中新增自定义字段,在样值中填写时间宏变量,重新进行字段映射处理。 图3 源字段新增自定义字段 如果是导入到数据仓库服务(DWS),则还需在目的字段中选择分布列,建议按如下顺序选取分布列: 有主键可以使用主键作为分布列。 多个数据段联合做主键的场景,建议设置所有主键作为分布列。 在没有主键的场景下,如果没有选择分布列,DWS会默认第一列作为分布列,可能会有数据倾斜风险。
  • 文件格式的公共参数 启动作业标识文件 这个主要用于自动化场景中,CDM配置了定时任务,周期去读取源端文件,但此时源端的文件正在生成中,CDM此时读取会造成重复写入或者是读取失败。所以,可以在源端作业参数中指定启动作业标识文件为“ok.txt”,在源端生成文件成功后,再在文件目录下生成“ok.txt”,这样CDM就能读取到完整的文件。 另外,可以设置超时时间,在超时时间内,CDM会周期去查询标识文件是否存在,超时后标识文件还不存在的话,则作业任务失败。 启动作业标识文件本身不会被迁移。 作业成功标识文件 文件系统为目的端的时候,当任务成功时,在目的端的目录下,生成一个空的文件,标识文件名由用户来指定。一般和“启动作业标识文件”搭配使用。 这里需要注意的是,不要和传输的文件混淆,例如传输文件为“finish.txt”,但如果作业成功标识文件也设置为“finish.txt”,这样会造成这两个文件相互覆盖。 过滤器 使用CDM迁移文件的时候,可以使用过滤器来过滤文件。支持通过通配符或时间过滤器来过滤文件。 选择通配符时,CDM只迁移满足过滤条件的目录或文件。 选择时间过滤器时,只有文件的修改时间晚于输入的时间才会被传输。 例如用户的“/table/”目录下存储了很多数据表的目录,并且按天进行了划分DRIVING_BEHAVIOR_20180101~DRIVING_BEHAVIOR_20180630,保存了DRIVING_BEHAVIOR从1月到6月的所有数据。如果只想迁移DRIVING_BEHAVIOR的3月份的表数据,那么需要在作业第一步指定源目录为“/table”,过滤类型选择“通配符”,然后指定“路径过滤器”为“DRIVING_BEHAVIOR_201803*”。
  • 文件格式问题解决方法 数据库的数据导出到CSV文件,由于数据中含有分隔符逗号,造成导出的CSV文件中数据混乱。 CDM提供了以下几种解决方法: 指定字段分隔符 使用数据库中不存在的字符,或者是极少见的不可打印字符来作为字段分隔符。例如可以在目的端指定“字段分隔符”为“%01”,这样导出的字段分隔符就是“\u0001”,详情可见表1。 使用包围符 在目的端作业参数中开启“使用包围符”,这样数据库中如果字段包含了字段分隔符,在导出到CSV文件的时候,CDM会使用包围符将该字段括起来,使之作为一个字段的值写入CSV文件。 数据库的数据包含换行符 场景:使用CDM先将MySQL中的某张表(表的某个字段值中包含了换行符\n)导出到CSV格式的文件中,然后再使用CDM将导出的CSV文件导入到MRS HBase,发现导出的CSV文件中出现了数据被截断的情况。 解决方法:指定换行符。 在使用CDM将MySQL的表数据导出到CSV文件时,指定目的端的换行符为“%01”(确保这个值不会出现在字段值中),这样导出的CSV文件中换行符就是“%01”。然后再使用CDM将CSV文件导入到MRS HBase时,指定源端的换行符为“%01”,这样就避免了数据被截断的问题。
  • 二进制格式 如果想要在文件系统间按原样复制文件,则可以选择二进制格式。二进制格式传输文件到文件的速率高、性能稳定,且不需要在作业第二步进行字段匹配。 文件传输的目录结构 CDM的文件传输,支持单文件,也支持一次传输目录下所有的文件。传输到目的端后,目录结构会保持原样。 增量迁移文件 使用CDM进行二进制传输文件时,目的端有一个参数“重复文件处理方式”,可以用作文件的增量迁移,具体请参见文件增量迁移。 增量迁移文件的时候,选择“重复文件处理方式”为“跳过重复文件”,这样如果源端有新增的文件,或者是迁移过程中出现了失败,只需要再次运行任务,已经迁移过的文件就不会再次迁移。 写入到临时文件 二进制迁移文件时候,可以在目的端指定是否写入到临时文件。如果指定了该参数,在文件复制过程中,会将文件先写入到一个临时文件中,迁移成功后,再进行rename或move操作,在目的端恢复文件。 生成文件MD5值 对每个传输的文件都生成一个MD5值,并将该值记录在一个新文件中,新文件以“.md5”作为后缀,并且可以指定MD5值生成的目录。
  • JSON格式 这里主要介绍JSON文件格式的以下内容: CDM支持解析的JSON类型 记录节点 从JSON文件复制数据 CDM支持解析的JSON类型:JSON对象、JSON数组。 JSON对象:JSON文件包含单个对象,或者以行分隔/串连的多个对象。 单一对象JSON { "took" : 190, "timed_out" : false, "total" : 1000001, "max_score" : 1.0 } 行分隔的JSON对象 {"took" : 188, "timed_out" : false, "total" : 1000003, "max_score" : 1.0 } {"took" : 189, "timed_out" : false, "total" : 1000004, "max_score" : 1.0 } 串连的JSON对象 { "took": 190, "timed_out": false, "total": 1000001, "max_score": 1.0 } { "took": 191, "timed_out": false, "total": 1000002, "max_score": 1.0 } JSON数组:JSON文件是包含多个JSON对象的数组。 [{ "took" : 190, "timed_out" : false, "total" : 1000001, "max_score" : 1.0 }, { "took" : 191, "timed_out" : false, "total" : 1000001, "max_score" : 1.0 }] 记录节点 记录数据的根节点。该节点对应的数据为JSON数组,CDM会以同一模式从该数组中提取数据。多层嵌套的JSON节点以字符“.”分割。 从JSON文件复制数据 示例一 从行分隔/串连的多个对象中提取数据。JSON文件包含了多个JSON对象,例如: { "took": 190, "timed_out": false, "total": 1000001, "max_score": 1.0 } { "took": 191, "timed_out": false, "total": 1000002, "max_score": 1.0 } { "took": 192, "timed_out": false, "total": 1000003, "max_score": 1.0 } 如果您想要从该JSON对象中提取数据,使用以下格式写入到数据库,只需要在作业第一步指定文件格式为“JSON格式”,指定JSON类型为“JSON对象”,然后在作业第二步进行字段匹配即可。 表2 示例 took timedOut total maxScore 190 false 1000001 1.0 191 false 1000002 1.0 192 false 1000003 1.0 示例二 从记录节点中提取数据。JSON文件包含了单个的JSON对象,但是其中有效的数据在一个数据节点下,例如: { "took": 190, "timed_out": false, "hits": { "total": 1000001, "max_score": 1.0, "hits": [{ "_id": "650612", "_source": { "name": "tom", "books": ["book1","book2","book3"] } }, { "_id": "650616", "_source": { "name": "tom", "books": ["book1","book2","book3"] } }, { "_id": "650618", "_source": { "name": "tom", "books": ["book1","book2","book3"] } }] } } 如果想以如下格式写入到数据库,则需要在作业第一步指定文件格式为“JSON格式”,指定JSON类型为“JSON对象”,并且指定记录节点为“hits.hits”,然后在作业第二步进行字段匹配。 表3 示例 ID SourceName SourceBooks 650612 tom ["book1","book2","book3"] 650616 tom ["book1","book2","book3"] 650618 tom ["book1","book2","book3"] 示例三 从JSON数组中提取数据。JSON文件是包含了多个JSON对象的JSON数组,例如: [{ "took" : 190, "timed_out" : false, "total" : 1000001, "max_score" : 1.0 }, { "took" : 191, "timed_out" : false, "total" : 1000002, "max_score" : 1.0 }] 如果想以如下格式写入到数据库,需要在作业第一步指定文件格式为“JSON格式”,指定JSON类型为“JSON数组”,然后在作业第二步进行字段匹配。 表4 示例 took timedOut total maxScore 190 false 1000001 1.0 191 false 1000002 1.0 示例四 在解析JSON文件的时候搭配转换器。在示例二前提下,想要把hits.max_score字段附加到所有记录中,即以如下格式写入到数据库中: 表5 示例 ID SourceName SourceBooks MaxScore 650612 tom ["book1","book2","book3"] 1.0 650616 tom ["book1","book2","book3"] 1.0 650618 tom ["book1","book2","book3"] 1.0 则需要在作业第一步指定文件格式为“JSON格式”,指定JSON类型为“JSON对象”,并且指定记录节点为“hits.hits”,然后在作业第二步添加转换器,操作步骤如下: 单击添加字段,新增一个字段。 图2 添加字段 在添加的新字段后面,单击添加字段转换器。 图3 添加字段转换器 创建“表达式转换”的转换器,表达式输入“1.0”,然后保存。 图4 配置字段转换器
  • 修订记录 发布日期 修改说明 2024-06-06 第五次正式发布。 新增使用CodeArts Inspector服务对内网主机进行扫描。 2023-09-07 第四次正式发布。 资产列表页面优化。 “漏洞扫描服务 VSS”更名为“漏洞管理服务 CodeArts Inspector”。 2021-07-13 第三次正式发布。 删除通过VSS扫描内网网站。 2020-05-21 第二次正式发布。 新增通过VSS扫描内网网站。 2019-11-07 第一次正式发布。
  • 整库迁移支持的数据源类型 整库迁移适用于将本地数据中心或在ECS上自建的数据库,同步到云上的数据库服务或大数据服务中,适用于数据库离线迁移场景,不适用于在线实时迁移。 数据集成支持整库迁移的数据源如表2所示。 表2 整库迁移支持的数据源 数据源分类 数据源 读取 写入 说明 数据仓库 数据仓库服务(DWS) 支持 支持 - Hadoop (仅支持本地存储,不支持存算分离场景,不支持Ranger场景,不支持ZK开启SSL场景) MRS HBase 支持 支持 整库迁移仅支持导出到MRS HBase。 建议使用的版本: 2.1.X 1.3.X MRS Hive 支持 支持 整库迁移仅支持导出到关系型数据库。 暂不支持2.x版本,建议使用的版本: 1.2.X 3.1.X FusionInsight HBase 支持 不支持 建议使用的版本: 2.1.X 1.3.X FusionInsight Hive 支持 不支持 整库迁移仅支持导出到关系型数据库。 暂不支持2.x版本,建议使用的版本: 1.2.X 3.1.X Apache HBase 支持 不支持 建议使用的版本: 2.1.X 1.3.X Apache Hive 支持 不支持 整库迁移仅支持导出到关系型数据库。 暂不支持2.x版本,建议使用的版本: 1.2.X 3.1.X MRS Hudi 支持 支持 支持本地存储、存算分离场景。 暂不支持2.x版本,建议使用的版本: 1.2.X 3.1.X 关系数据库 云数据库 MySQL 支持 支持 不支持OLTP到OLTP迁移,此场景推荐通过数据复制服务DRS进行迁移。 云数据库 PostgreSQL 支持 支持 云数据库 SQL Server 支持 支持 MySQL 支持 不支持 PostgreSQL 支持 不支持 Microsoft SQL Server 支持 不支持 Oracle 支持 不支持 SAP HANA 支持 不支持 仅支持2.00.050.00.1592305219版本。 仅支持Generic Edition。 不支持BW/4 FOR HANA。 仅支持英文字母的数据库名、表名与列名,不支持存在空格、符号等特殊字符。 仅支持日期、数字、布尔、字符(除SHORTTEXT) 类型的数据类型,不支持二进制类型等其他数据类型。 迁移时不支持目的端自动建表。 达梦数据库 DM 支持 不支持 仅支持导出到DWS、Hive NoSQL 分布式缓存服务(DCS) 不支持 支持 仅支持MRS到DCS迁移。 文档数据库服务(DDS) 支持 支持 仅支持DDS和MRS之间迁移。 表格存储服务(CloudTable) 支持 支持 -
  • 表/文件迁移支持的数据源类型 表/文件迁移可以实现表或文件级别的数据迁移。 表/文件迁移时支持的数据源如表1所示。 表1 表/文件迁移支持的数据源 数据源分类 源端数据源 对应的目的端数据源 说明 数据仓库 数据仓库服务(DWS) 数据仓库:数据仓库服务(DWS),数据湖探索(DLI),MRS ClickHouse Hadoop:MRS HDFS,MRS HBase,MRS Hive 对象存储:对象存储服务(OBS) 关系型数据库:云数据库 MySQL,云数据库 PostgreSQL,云数据库 SQL Server,MySQL,PostgreSQL,Microsoft SQL Server,Oracle NoSQL:表格存储服务(CloudTable) 搜索:Elasticsearch,云搜索服务(CSS) 不支持DWS物理机纳管模式。 数据湖探索(DLI) 数据仓库:数据仓库服务(DWS),数据湖探索(DLI),MRS ClickHouse Hadoop:MRS HDFS,MRS HBase,MRS Hive 对象存储:对象存储服务(OBS) 关系型数据库:云数据库 MySQL,云数据库 PostgreSQL,云数据库 SQL Server,MySQL,PostgreSQL,Microsoft SQL Server,Oracle NoSQL:表格存储服务(CloudTable),MongoDB 搜索:Elasticsearch,云搜索服务(CSS) MongoDB建议使用的版本:4.2。 MRS ClickHouse 数据仓库:MRS ClickHouse,数据湖探索(DLI) MRS ClickHouse建议使用的版本:21.3.4.X。 Hadoop MRS HDFS 数据仓库:数据仓库服务(DWS),数据湖探索(DLI) Hadoop:MRS HDFS,MRS HBase,MRS Hive 对象存储:对象存储服务(OBS) 关系型数据库:云数据库 MySQL,云数据库 PostgreSQL,云数据库 SQL Server,MySQL,PostgreSQL,Microsoft SQL Server,Oracle NoSQL:表格存储服务(CloudTable) 搜索:Elasticsearch,云搜索服务(CSS) 支持本地存储,仅MRS Hive、MRS Hudi支持存算分离场景。 仅MRS Hive支持Ranger场景。 不支持ZK开启SSL场景。 MRS HDFS建议使用的版本: 2.8.X 3.1.X MRS HBase建议使用的版本: 2.1.X 1.3.X MRS Hive、MRS Hudi暂不支持2.x版本,建议使用的版本: 1.2.X 3.1.X MRS HBase MRS Hive 数据仓库:数据仓库服务(DWS),数据湖探索(DLI),MRS Clickhouse Hadoop:MRS HDFS,MRS HBase,MRS Hive 对象存储:对象存储服务(OBS) 关系型数据库:云数据库 MySQL,云数据库 PostgreSQL,云数据库 SQL Server,MySQL,PostgreSQL,Microsoft SQL Server,Oracle NoSQL:表格存储服务(CloudTable) 搜索:Elasticsearch,云搜索服务(CSS) MRS Hudi 数据仓库:数据仓库服务(DWS) Hadoop:MRS HBase FusionInsight HDFS 数据仓库:数据仓库服务(DWS),数据湖探索(DLI) Hadoop:MRS HDFS,MRS HBase,MRS Hive 对象存储:对象存储服务(OBS) NoSQL:表格存储服务(CloudTable) 搜索:Elasticsearch,云搜索服务(CSS) FusionInsight数据源不支持作为目的端。 仅支持本地存储,不支持存算分离场景。 不支持Ranger场景。 不支持ZK开启SSL场景。 FusionInsight HDFS建议使用的版本: 2.8.X 3.1.X FusionInsight HBase建议使用的版本: 2.1.X 1.3.X FusionInsight Hive建议使用的版本: 1.2.X 3.1.X FusionInsight HBase FusionInsight Hive Apache HBase 数据仓库:数据仓库服务(DWS),数据湖探索(DLI) Hadoop:MRS HDFS,MRS HBase,MRS Hive 对象存储:对象存储服务(OBS) NoSQL:表格存储服务(CloudTable) 搜索:Elasticsearch,云搜索服务(CSS) Apache数据源不支持作为目的端。 仅支持本地存储,不支持存算分离场景。 不支持Ranger场景。 不支持ZK开启SSL场景。 Apache HBase建议使用的版本: 2.1.X 1.3.X Apache Hive暂不支持2.x版本,建议使用的版本: 1.2.X 3.1.X Apache HDFS建议使用的版本: 2.8.X 3.1.X Apache Hive Apache HDFS 对象存储 对象存储服务(OBS) 数据仓库:数据仓库服务(DWS),数据湖探索(DLI) Hadoop:MRS HDFS,MRS HBase,MRS Hive NoSQL:表格存储服务(CloudTable) 搜索:Elasticsearch,云搜索服务(CSS) 对象存储服务之间的迁移,推荐使用对象存储迁移服务OMS。 不支持二进制文件导入到数据库或NoSQL。 文件系统 FTP 数据仓库:数据仓库服务(DWS),数据湖探索(DLI) Hadoop:MRS HDFS,MRS HBase,MRS Hive NoSQL:表格存储服务(CloudTable) 搜索:Elasticsearch,云搜索服务(CSS) 对象存储:对象存储服务(OBS) 文件系统不支持作为目的端。 FTP/SFTP到搜索的迁移仅支持如CSV等文本文件,不支持二进制文件。 FTP/SFTP到OBS的迁移仅支持二进制文件。 HTTP到OBS的迁移推荐使用obsutil工具,请参见obsutil简介。 SFTP HTTP Hadoop:MRS HDFS 关系型数据库 云数据库 MySQL 数据仓库:数据仓库服务(DWS),数据湖探索(DLI) Hadoop:MRS HDFS,MRS HBase,MRS Hive,MRS Hudi 对象存储:对象存储服务(OBS) NoSQL:表格存储服务(CloudTable) 关系型数据库:云数据库 MySQL,云数据库 PostgreSQL,云数据库 SQL Server 搜索:Elasticsearch,云搜索服务(CSS) OLTP数据库之间的迁移推荐通过数据复制服务DRS进行迁移。 云数据库 MySQL不支持SSL模式。 Microsoft SQL Server建议使用的版本:2005以上。 金仓和GaussDB数据源可通过PostgreSQL连接器进行连接,支持的迁移作业的源端、目的端情况与PostgreSQL数据源一致。 云数据库 SQL Server 数据仓库:数据仓库服务(DWS),数据湖探索(DLI) Hadoop:MRS HDFS,MRS HBase,MRS Hive 对象存储:对象存储服务(OBS) NoSQL:表格存储服务(CloudTable) 关系型数据库:云数据库 MySQL,云数据库 PostgreSQL,云数据库 SQL Server 搜索:Elasticsearch,云搜索服务(CSS) 云数据库 PostgreSQL MySQL 数据仓库:数据仓库服务(DWS),数据湖探索(DLI) Hadoop:MRS HDFS,MRS HBase,MRS Hive,MRS Hudi 对象存储:对象存储服务(OBS) NoSQL:表格存储服务(CloudTable) 搜索:Elasticsearch,云搜索服务(CSS) PostgreSQL Oracle Microsoft SQL Server 数据仓库:数据仓库服务(DWS),数据湖探索(DLI) Hadoop:MRS HDFS,MRS HBase,MRS Hive 对象存储:对象存储服务(OBS) NoSQL:表格存储服务(CloudTable) 搜索:Elasticsearch,云搜索服务(CSS) SAP HANA 数据仓库:数据仓库服务(DWS),数据湖探索(DLI) Hadoop:MRS Hive SAP HANA数据源存在如下约束: SAP HANA不支持作为目的端。 仅支持2.00.050.00.1592305219版本。 仅支持Generic Edition。 不支持BW/4 FOR HANA。 仅支持英文字母的数据库名、表名与列名,不支持存在空格、符号等特殊字符。 仅支持日期、数字、布尔、字符(除SHORTTEXT) 类型的数据类型,不支持二进制类型等其他数据类型。 迁移时不支持目的端自动建表。 分库 数据仓库:数据湖探索(DLI) Hadoop:MRS HBase,MRS Hive 搜索:Elasticsearch,云搜索服务(CSS) 对象存储:对象存储服务(OBS) 分库数据源不支持作为目的端。 神通(ST) Hadoop:MRS Hive,MRS Hudi - NoSQL 分布式缓存服务(DCS) Hadoop:MRS HDFS,MRS HBase,MRS Hive 除了表格存储服务(CloudTable)外,其他NoSQL数据源不支持作为目的端。 Redis到DCS的迁移,可以通过其他方式进行,请参见自建Redis迁移至DCS。 Redis 文档数据库服务(DDS) MongoDB 表格存储服务(CloudTable HBase) 数据仓库:数据仓库服务(DWS),数据湖探索(DLI) Hadoop:MRS HDFS,MRS HBase,MRS Hive 对象存储:对象存储服务(OBS) 关系型数据库:云数据库 MySQL,云数据库 PostgreSQL,云数据库 SQL Server,MySQL,PostgreSQL,Microsoft SQL Server,Oracle NoSQL:表格存储服务(CloudTable) 搜索:Elasticsearch,云搜索服务(CSS) Cassandra 数据仓库:数据仓库服务(DWS),数据湖探索(DLI) Hadoop:MRS HDFS,MRS HBase,MRS Hive 对象存储:对象存储服务(OBS) NoSQL:表格存储服务(CloudTable) 搜索:Elasticsearch,云搜索服务(CSS) 消息系统 数据接入服务(DIS) 搜索:云搜索服务(CSS) 消息系统不支持作为目的端。 Apache Kafka DMS Kafka MRS Kafka 数据仓库:数据仓库服务(DWS),数据湖探索(DLI) Hadoop:MRS HDFS,MRS HBase,MRS Hive 对象存储:对象存储服务(OBS) 关系型数据库:云数据库 MySQL,云数据库 PostgreSQL,云数据库 SQL Server NoSQL:表格存储服务(CloudTable) 搜索:Elasticsearch,云搜索服务(CSS) MRS Kafka不支持作为目的端。 仅支持本地存储,不支持存算分离场景。 不支持Ranger场景。 不支持ZK开启SSL场景。 搜索 Elasticsearch 数据仓库:数据仓库服务(DWS),数据湖探索(DLI) Hadoop:MRS HDFS,MRS HBase,MRS Hive 对象存储:对象存储服务(OBS) 关系型数据库:云数据库 MySQL,云数据库 PostgreSQL,云数据库 SQL Server NoSQL:表格存储服务(CloudTable) 搜索:Elasticsearch,云搜索服务(CSS) Elasticsearch仅支持非安全模式。 云搜索服务(CSS) 导入数据到CSS推荐使用Logstash,请参见使用Logstash导入数据到Elasticsearch。 上表中非云服务的数据源,例如MySQL,既可以支持用户本地数据中心自建的MySQL,也可以是用户在ECS上自建的MySQL,还可以是第三方云的MySQL服务。
  • 达梦数据库迁移时支持的数据类型 源端为达梦数据库,目的端为Hive、DWS时,支持的数据类型如下: 表11 达梦数据库作为源端时支持的数据类型 类别 类型 简要释义 存储格式示例 Hive DWS 字符 CHAR 用于存储指定定长字符串。 ‘a’或‘aaaaa’ CHAR CHAR CHARACTER 与 CHAR 相同。 ‘a’或‘aaaaa’ CHAR CHAR VARCHAR 用于存储指定变长字符串. ‘a’或‘aaaaa’ VARCHAR VARCHAR VARCHAR2 与 VARCHAR 相同。 ‘a’或‘aaaaa’ VARCHAR VARCHAR 数值 NUMERIC 用于存储零、正负定点数。 52.36 DECIMAL NUMERIC DECIMAL 与 NUMERIC 相似。 52.36 DECIMAL NUMERIC DEC 与 DECIMAL 相同。 52.36 DECIMAL NUMERIC NUMBER 与 NUMERIC 相同。 52.36 DECIMAL NUMERIC INTEGER 用于存储有符号整数,精度为10,标度为0。 5236 INT INTEGER INT 与 INTEGER 相同。 5236 INT INTEGER BIGINT 用于存储有符号整数,精度为19,标度为0。 5236 BIGINT BIGINT TINYINT 用于存储有符号整数,精度为3,标度为0。 100 TINYINT SMALLINT SMALLINT 用于存储有符号整数,精度为5,标度为0。 9999 SMALLINT SMALLINT BYTE 与 TINYINT 相似,精度为3,标度为0。 100 TINYINT SMALLINT BINARY 用于存储定长二进制数据。 0x2A3B4058 BINARY(NULL) BYTEA(NULL) VARBINARY 用于存储可变长二进制数据。 0x2A3B4058 BINARY(NULL) BYTEA(NULL) FLOAT 用于存储带二进制精度的浮点数。 52.36 FLOAT FLOAT8 DOUBLE 与FLOAT类似。 52.36 DOUBLE FLOAT8 REAL 用于存储带二进制精度的浮点数,但它不能由用户指定使用的精度。 52.3 FLOAT FLOAT4 DOUBLE PRECISION 用于存储指明双精度的浮点数。 52.3 DOUBLE FLOAT8 位串 BIT 用于存储整数数据 1、0 或 NULL。 1、0 或 NULL TINYINT(1 0 NULL) BOOLEAN(true false NULL) 日期时间 DATE 用于存储年、月、日信息。 1999-10-01'、'1999/10/01'或'1999.10.01' DATE TIMESTAMP TIME 用于存储时、分、秒信息。 '09:10:21'或'9:10:21' 不支持(String) TIME TIMESTAMP 用于存储年、月、日、时、分、秒信息。 2002-12-12 09:10:21','2002-12-12 9:10:21' '2002/12/12 09:10:21' 或'2002.12.12 09:10:21' TIMESTAMP TIMESTAMP TIME WITH TIME ZONE 用于存储一个带时区的 TIME 值,其定义是在 TIME 类型的后面加上时区信息。 '09:10:21 +8:00', '09:10:21+8:00'或'9:10:21+8:00' 不支持(String) TIME WITH TIME ZONE TIMESTAMP WITH TIME ZONE 用于存储一个带时区的 TIMESTAMP 值,其定义是TIMESTAMP类型的后面加上时区信息。 2002-12-12 09:10:21 +8:00','2002-12-12 9:10:21 +8:00' '2002/12/12 09:10:21 +8:00'或'2002.12.12 09:10:21 +8:00' TIMESTAMP TIMESTAMP WITH TIME ZONE TIMESTAMP WITH LOCAL TIME ZONE 用于存储一个本地时区的 TIMESTAMP 值,能够将标准时区类型 TIMESTAMP WITH TIME ZONE 类型转化为本地时区类型。 2002-12-12 09:10:21 +8:00','2002-12-12 9:10:21 +8:00' '2002/12/12 09:10:21 +8:00'或'2002.12.12 09:10:21 +8:00' 不支持(String) 不支持(TEXT) DATETIME WITH TIME ZONE 同TIMESTAMP WITH TIME ZONE。 2002-12-12 09:10:21 +8:00','2002-12-12 9:10:21 +8:00' '2002/12/12 09:10:21 +8:00'或'2002.12.12 09:10:21 +8:00' TIMESTAMP TIMESTAMP WITH TIME ZONE INTERVAL YEAR 描述一个若干年的间隔,引导精度规定了年的取值范围。 INTERVAL '0015' YEAR 不支持(String) 不支持(VARCHAR) INTERVAL YEAR TO MONTH 描述一个若干年若干月的间隔,引导精度规定了年的取值范围。 INTERVAL '0015-08' YEAR TO MONTH 不支持(String) 不支持(VARCHAR) INTERVAL MONTH 描述一个若干月的间隔,引导精度规定了月的取值范围。 INTERVAL '0015' MONTH 不支持(String) 不支持(VARCHAR) INTERVAL DAY 描述一个若干日的间隔,引导精度规定了日的取值范围。 INTERVAL '150' DAY 不支持(String) 不支持(VARCHAR) INTERVAL DAY TO HOUR 描述一个若干日若干小时的间隔,引导精度规定了日的取值范围。 INTERVAL '9 23' DAY TO HOUR 不支持(String) 不支持(VARCHAR) INTERVAL DAY TO MINUTE 描述一个若干日若干小时若干分钟的间隔,引导精度规定了日的取值范围。 INTERVAL '09 23:12' DAY TO MINUTE 不支持(String) 不支持(VARCHAR) INTERVAL DAY TO SECOND 描述一个若干日若干小时若干分钟若干秒的间隔,引导精度规定了日的取值范围。 INTERVAL '09 23:12:01.1' DAY TO SECOND 不支持(String) 不支持(VARCHAR) INTERVAL HOUR 描述一个若干小时的间隔,引导精度规定了小时的取值范围。 INTERVAL '150' HOUR 不支持(String) 不支持(VARCHAR) INTERVAL HOUR TO MINUTE 描述一个若干小时若干分钟的间隔,引导精度规定了小时的取值范围。 INTERVAL '23:12' HOUR TO MINUTE 不支持(String) 不支持(VARCHAR) INTERVAL HOUR TO SECOND 描述一个若干小时若干分钟若干秒的间隔,引导精度规定了小时的取值范围。 INTERVAL '23:12:01.1' HOUR TO SECOND 不支持(String) 不支持(VARCHAR) INTERVAL MINUTE 描述一个若干分钟的间隔,引导精度规定了分钟的取值范围。 INTERVAL '150' MINUTE 不支持(String) 不支持(VARCHAR) INTERVAL MINUTE TO SECOND 描述一个若干分钟若干秒的间隔,引导精度规定了分钟的取值范围。 INTERVAL '12:01.1' MINUTE TO SECOND 不支持(String) 不支持(VARCHAR) INTERVAL SECOND 描述一个若干秒的间隔,引导精度规定了秒整数部分的取值范围。 INTERVAL '51.1' SECOND 不支持(String) 不支持(VARCHAR) 多媒体 IMAGE IMAGE 用于指明多媒体信息中的图像类型。 图像由不定长的像素点阵组成,长度最大为 2G-1 字节。该类型除了存储图像数据之外,还可用于存储任何其它二进制数据。 0x2A3B4058 (二进制数据) 不支持 不支持 LONGVARBINARY 与IMAGE相同。 0x2A3B4059 (二进制数据) 不支持 不支持 TEXT 用于存储长字符串类型,其字符串的长度 最大为 2G-1,存储长的文本串。 0x5236(二进制数据) 不支持 不支持 LONGVARCHAR 与 TEXT 相似。 0x5236(二进制数据) 不支持 不支持 BLOB 用于存储变长的二进制大对象,长度最大为2G-1字节。 0x5236(二进制数据) 不支持 不支持 CLOB 用于存储变长的二进制大对象,长度最大为2G-1字节。 0x5236(二进制数据) 不支持 不支持 BFILE 用于指明存储在操作系统中的二进制文件, 文件存储在操作系统而非数 据库中,仅能进行只读访问。 - 不支持 不支持
  • DLI数据库迁移时支持的数据类型 源端为DLI数据库时,支持的数据类型如下: 表9 DLI数据库作为源端时支持的数据类型 类别 类型 简要释义 字符 CHAR 用于存储指定定长字符串。 VARCHAR 与CHAR相同。 STRING 用于存储长字符串类型,其字符串的长度最大为 2G-1,存储长的文本串。 数值 BIGINT 用于存储有符号整数,精度为19,标度为0。 TINYINT 用于存储有符号整数,精度为3,标度为0。 SMALLINT SMALLINT类型的数据占用了两个字节的存储空间,其中一个二进制位表示整数值的正负号,其它15个二进制位表示长度和大小,可以表示-2的15次方~2的15次方-1范围内的所有整数。 INT 用于存储有符号整数,精度为10,标度为0。 DECIMAL 带固定精度和小数位数的数值数据类型。 FLOAT 用于存储带二进制精度的浮点数。 DOUBLE 用于存储指明双精度的浮点数。 日期时间 DATE 用于存储年、月、日信息。 TIMESTAMP 用于存储年、月、日、时、分、秒信息。 布尔类型 BOOLEAN 存储在1个字节中,可以取值为 1、0 或 NULL。
  • Elasticsearch/云搜索服务(CSS)数据库迁移时支持的数据类型 源端为Elasticsearch/云搜索服务(CSS)数据库时,支持的数据类型如下: 表10 Elasticsearch/云搜索服务(CSS)数据库作为源端时支持的数据类型 类别 类型 简要释义 存储格式示例 MySQL 字符 keyword 用于存储字符串。 “keyword” String text 用于存储长字符串类型,其字符串的长度最大为 2G-1,存储长的文本串。 “long string” TEXT string 用于存储长字符串类型,其字符串的长度最大为 2G-1,存储长的文本串。 “a string” String 整数 short 用于存储16位有符号整数,取值范围为-32768至32767。 32765 smallInt integer 用于存储32位有符号整数,取值范围为-231至231-1。 3276566 int long 用于存储64位有符号整数,取值范围为-263至263-1。 3276566666 BIGINT 数值 double 64位双精度IEEE 754浮点类型。 21.333 double float 32位单精度IEEE 754浮点类型 。 21.333 double 布尔类型 boolean 存储在1个字节中,可以取值为 1、0 或 NULL。 1 Boolean 对象 object 扁平化存储对象的字符串。 {"users.name":["John","Smith"], users.age":[26,28], "users.sex":[1,2]} TEXT 嵌套 nested 嵌套存储对象的字符串。 {"users.name" : "John" , "users.age" : 26, "users.sex" : 1} { "users.name" : "Smith", "users.age" : 28, "users.sex" : 2} TEXT 日期 date 日期格式的字符串。 “2018-01-13”或“2018-01-13 12:10:30” DATE或timeStamp 特殊 ip Ip地址格式的字符串。 “192.168.127.100” String 数组 string_array 全部是字符串的数组。 [“str”,“str”] TEXT short_array 全部是16位整数的数组。 [1,1,1] TEXT integer_array 全部是32位整数的数组。 [1,1,1] TEXT long_array 全部是64位整数的数组。 [1,1,1] TEXT float_array 全部是32位浮点数的数组。 [1.0,1.0,1.0] TEXT double_array 全部是64位浮点数的数组。 [1.0,1.0,1.0] TEXT 范围 completion 自动补全的字符串。 “string” TEXT
  • SAP HANA数据库迁移时支持的数据类型 源端为SAP HANA数据库时,支持的数据类型如下: 表8 SAP HANA数据库作为源端时支持的数据类型 类别 类型 简要释义 字符 VARCHAR 用于存储指定定长字符串。 NVARCHAR 包含unicode格式数据的变长字符串。 TEXT 用于存储长字符串类型,其字符串的长度最大为 2G-1,存储长的文本串。 数值 BIGINT 用于存储有符号整数,精度为19,标度为0。 TINYINT 用于存储有符号整数,精度为3,标度为0。 SMALLINT SMALLINT类型的数据占用了两个字节的存储空间,其中一个二进制位表示整数值的正负号,其它15个二进制位表示长度和大小,可以表示-2的15次方~2的15次方-1范围内的所有整数。 REAL 可以存储正的或者负的十进制数值。 DECIMAL 带固定精度和小数位数的数值数据类型。 FLOAT 用于存储带二进制精度的浮点数。 DOUBLE 用于存储指明双精度的浮点数。 日期时间 DATE 用于存储年、月、日信息。 TIME 用于存储时、分、秒信息。 TIMESTAMP 用于存储年、月、日、时、分、秒信息。 多媒体 CLOB 用于存储变长的二进制大对象,长度最大为2G-1字节。 NCLOB 这种类型能够存储最多4GB的数据。当字符集发生转换时,这种类型会受到影响。 布尔类型 BOOLEAN 存储在1个字节中,可以取值为 1、0 或 NULL。
  • DWS数据库迁移时支持的数据类型 源端为DWS数据库时,支持的数据类型如下: 表6 DWS数据库作为源端时支持的数据类型 类别 类型 简要释义 字符 char 定长字符串,存储右空格填充到指定的长度。 varchar 变长字符串,不会用空格将字段或变量填充至最大长度。 数值 double 用于存储指明双精度的浮点数。 decimal(p,s) 精度p表示为值存储的有效位数,刻度s表示可以在小数点后存储的位数。p最大位数是1000。 numeric 用于存储零、正负定点数。 real 与double相同。 int int存储在4个字节中,其中一个二进制位表示符号位,其它31个二进制位表示长度和大小,可以表示-2的31次方~2的31次方-1范围内的所有整数。 bigint bigint存储在8个字节中,其中一个二进制位表示符号位,其它63个二进制位表示长度和大小,可以表示-2的63次方~2的63次方-1范围内的所有整数。 smallint smallint类型的数据占用了两个字节的存储空间,其中一个二进制位表示整数值的正负号,其它15个二进制位表示长度和大小,可以表示-2的15次方~2的15次方-1范围内的所有整数。 tinyint tinyint类型的数据占用了一个字节的存储空间,可以表示0~255范围内的所有整数。 日期时间 date 存储日期数据。 timestamp 存储日期和时间数据,无时区。 time 只用于一日内时间,无时区。 位串类型 bit 定长位串,例如: b'000101'。 布尔类型 boolean 存储在1个字节中,可以取值为 1、0 或 NULL。 文本类型 text 变长文本,无长度限制。
  • 神通(ST)数据库迁移时支持的数据类型 源端为神通(ST)数据库,目的端为MRS Hive、MRS Hudi时,支持的数据类型如下: 表7 神通(ST)数据库作为源端时支持的数据类型 类别 类型 简要释义 存储格式示例 MRS Hive MRS Hudi 字符 VARCHAR 用于存储指定定长字符串。 ‘a’或‘aaaaa’ VARCHAR(765) STRING BPCHAR 用于存储指定变长字符串。 ‘a’或‘aaaaa’ VARCHAR(765) STRING 数值 NUMERIC 用于存储零、正负定点数。 52.36 DECIMAL(10,0) DECIMAL(18,0) INT 用于存储零、正负定点数。 5236 INT INT BIGINT 用于存储有符号整数,精度为19,标度为0。 5236 BIGINT BIGINT TINYINT 用于存储有符号整数,精度为3,标度为0。 100 SMALLINT INT BINARY 用于存储定长二进制数据。 0x2A3B4058 不支持 FLOAT VARBINARY 用于存储可变长二进制数据。 0x2A3B4058 不支持 BINARY FLOAT 用于存储带二进制精度的浮点数。 52.36 FLOAT FLOAT DOUBLE 用于存储指明双精度的浮点数。 52.3 DOUBLE DOUBLE 日期时间 DATE 用于存储年、月、日信息。 '1999-10-01'、'1999/10/01'或'1999.10.01' DATE DATE TIME 用于存储时、分、秒信息。 '09:10:21'或'9:10:21' STRING STRING TIMESTAMP 用于存储年、月、日、时、分、秒信息。 '2002-12-12 09:10:21'、'2002-12-12 9:10:21'、 '2002/12/12 09:10:21' 或'2002.12.12 09:10:21' TIMESTAMP TIMESTAMP 多媒体 CLOB 用于存储变长的二进制大对象,长度最大为2G-1字节。 0x5236(二进制数据) STRING STRING BLOB 用于存储变长的二进制大对象,长度最大为2G-1字节。 0x5236(二进制数据) 不支持 BINARY 布尔类型 BOOLEAN 存储在1个字节中,可以取值为 1、0 或 NULL。 1 BOOLEAN BOOLEAN
  • PostgreSQL数据库迁移时支持的数据类型 源端为PostgreSQL数据库,目的端为Hive、DWS、DLI时,支持的数据类型如下: 表5 PostgreSQL数据库作为源端时支持的数据类型 类别 类型 简要释义 Hive DWS DLI 字符 char 定长字符串,存储右空格填充到指定的长度。 CHAR CHAR 不支持(String) varchar 变长字符串,不会用空格将字段或变量填充至最大长度。 CARCHAR CARCHAR 不支持(String) 数值 smallint 拓展名 int2,存储在2个字节中,它允许的范围是从-32768到32767。 SMALLINT SMALLINT SMALLINT int 拓展名 int4,存储在4个字节中,它允许的范围是从-2147483648到2147483647。 INTEGER INT INT bigint 拓展名 int8,存储在8个字节中,允许范围为-9223372036854775808到9223372036854775807。 BIGINT BIGINT BIGINT decimal(p,s) 精度p表示为值存储的有效位数,刻度s表示可以在小数点后存储的位数。p最大位数是1000。 DECIMAL(P,S) DECIMAL(P,S) DECIMAL(P,S) float 4字节或8字节存储。float(n):n取值在1-24内,精度有效位数为6 位数,长度4 个字节,是单精度,n取值在25-53内,精度有效位数为15 位数,长度8 字节,是双精度。 FLOAT/DOUBLE FLOAT/DOUBLE FLOAT/DOUBLE smallserial 序列数据类型,以smallint格式存储。 SMALLINT SMALLINT SMALLINT serial 序列数据类型,以int格式存储。 INTEGER INT INT bigserial 序列数据类型,以bigint格式存储。 BIGINT BIGINT BIGINT 日期时间 date 存储日期数据。 DATE DATE DATE timestamp 存储日期和时间数据,无时区。 TIMESTAMP TIMESTAMP 不支持(String) timestamptz 存储日期和时间数据,有时区。 TIMESTAMP TIMESTAMPZ 不支持(String) time 只用于一日内时间,无时区。 不支持(String) TIME 不支持(String) timez 只用于一日内时间,有时区。 不支持(String) TIMEZ 不支持(String) interval 时间间隔。 不支持(String) 不支持(String) 不支持(String) 位串类型 bit 定长位串,例如: b'000101'。 不支持(String) 不支持(String) 不支持(String) varbit 可变长位串,例如: b'101'。 不支持(String) 不支持(String) 不支持(String) 货币类型 money 存储在8个字节中,它允许的范围是从-922337203685477.5808到922337203685477.5807。 DOUBLE MONEY DECIMAL(P,S) 布尔类型 boolean 存储在1个字节中,可以取值为 1、0 或 NULL。 BOOLEAN BOOLEAN BOOLEAN 文本类型 text 变长文本,无长度限制。 不支持(String) 不支持(String) 不支持(String)
  • SQL Server数据库迁移时支持的数据类型 源端为SQL Server数据库,目的端为Hive、DWS、Oracle时,支持的数据类型如下: 表4 SQL Server数据库作为源端时支持的数据类型 类别 类型 简要释义 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 不支持 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。 不支持 不支持 不支持
  • Oracle数据库迁移时支持的数据类型 源端为Oracle数据库,目的端为Hive、DWS时,支持的数据类型如下: 表3 Oracle数据库作为源端时支持的数据类型 类别 类型 简要释义 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包含要进行字符集转换的信息。这种数据类型很适合存储纯文本信息。 String 不支持 nclob 这种类型能够存储最多4GB的数据。当字符集发生转换时,这种类型会受到影响。 不支持 不支持 bfile 可以在数据库列中存储一个oracle目录对象和一个文件名,用户可以通过它来读取这个文件。 不支持 不支持 其他类型 rowid 实际上是数据库表中行的地址,它有10字节长。 不支持 不支持 urowid 是一个通用的rowid,没有固定的rowid的表。 不支持 不支持
  • MySQL数据库迁移时支持的数据类型 源端为MySQL数据库,目的端为Hive、DWS时,支持的数据类型如下: 表2 开源MySQL数据库作为源端时支持的数据类型 类别 类型 简要释义 存储格式示例 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(二进制数据) 不支持 不支持 TINYBLOB 0-255字节短文本二进制字符串。 - 不支持 不支持 MEDIUMBLOB 0-167772154字节中等长度文本二进制字符串。 - 不支持 不支持 LONGBLOB 0-4294967295字节极大长度文本二进制字符串。 0x5236(二进制数据) 不支持 不支持 特殊类型 SET SET是一个字符串对象,可以有零或多个值,其值来自表创建时规定的允许的一列值。指定包括多个SET成员的SET列值时各成员之间用逗号(‘,’)间隔开。这样SET成员值本身不能包含逗号。 - - 不支持 JSON - - 不支持 不支持(TEXT) ENUM 当定义一个ENUM,要创建它的值的列表,这些是必须用于选择的项(也可以是NULL)。例如,如果想要字段包含“A”或“B”或“C”,那么可以定义为ENUM为 ENUM(“A”,“B”,“C”)也只有这些值(或NULL)才能用来填充这个字段。 - 不支持 不支持
  • 数据库迁移通用限制和约束 CDM以批量迁移为主,仅支持有限的数据库增量迁移,不支持数据库实时增量迁移,推荐使用数据复制服务(DRS)来实现数据库增量迁移到RDS。 CDM支持的数据库整库迁移,仅支持数据表迁移,不支持存储过程、触发器、函数、视图等数据库对象迁移。 CDM仅适用于一次性将数据库迁移到云上的场景,包括同构数据库迁移和异构数据库迁移,不适合数据同步场景,比如容灾、实时同步。 CDM迁移数据库整库或数据表失败时,已经导入到目标表中的数据不会自动回滚,对于需要事务模式迁移的用户,可以配置“先导入到阶段表”参数,实现迁移失败时数据回滚。 极端情况下,可能存在创建的阶段表或临时表无法自动删除,也需要用户手工清理(阶段表的表名以“_cdm_stage”结尾,例如:cdmtet_cdm_stage)。 CDM访问用户本地数据中心数据源时(例如本地自建的MySQL数据库),需要用户的数据源可支持Internet公网访问,并为CDM集群实例绑定弹性IP。这种方式下安全实践是:本地数据源通过防火墙或安全策略仅允许CDM弹性IP访问。 仅支持常用的数据类型,字符串、数字、日期,对象类型有限支持,如果对象过大会出现无法迁移的问题。 仅支持数据库字符集为GBK和UTF-8。 字段名不可包含&和%。 jdbc2hive,hive2jdbc整库迁移的实现机制就是按字段名称映射的,不支持字段名称不一致的迁移场景。
  • 数据仓库服务(DWS)数据源约束 DWS主键或表只有一个字段时,要求字段类型必须是如下常用的字符串、数值、日期类型。从其他数据库迁移到DWS时,如果选择自动建表,主键必须为以下类型,未设置主键的情况下至少要有一个字段是以下类型,否则会无法创建表导致CDM作业失败。 INTEGER TYPES:TINYINT,SMALLINT,INT,BIGINT,NUMERIC/DECIMAL CHARACTER TYPES:CHAR,BPCHAR,VARCHAR,VARCHAR2,NVARCHAR2,TEXT DATA/TIME TYPES:DATE,TIME,TIMETZ,TIMESTAMP,TIMESTAMPTZ,INTERVAL,SMALLDATETIME 2.9.1.200及之前版本的集群,DWS源端暂不支持NVARCHAR2数据类型。 DWS字符类型字段认为空字符串('')是空值,有非空约束的字段无法插入空字符串(''),这点与MySQL行为不一致,MySQL不认为空字符串('')是空值。从MySQL迁移到DWS时,可能会因为上述原因导致迁移失败。 使用GDS模式快速导入数据到DWS时,需要配置相关安全组或防火墙策略,允许DWS/LibrA的数据节点访问CDM IP地址的25000端口。 使用GDS模式导入数据到DWS时,CDM会自动创建外表(foreign table)用于数据导入,表名以UUID结尾(例如:cdmtest_aecf3f8n0z73dsl72d0d1dk4lcir8cd),作业失败正常会自动删除,极端情况下可能需要用户手工清理。
  • 关系数据库迁移权限配置 常见关系数据库迁移需要的最小权限级: MySQL:INFORMATION_SCHEMA库的读权限,以及对数据表的读权限。 Oracle:需要该用户有resource角色,并在tablespace下有数据表的select权限。 达梦:具有该schema下select any table的权限。 DWS:需要表的schema usage权限和数据表的查询权限。 SQL Server:用户需要有sysadmin权限。 PostgreSQL:角色拥有数据库下schema下表的select权限。
  • CDM系统级限制和约束 DataArts Studio实例赠送的CDM集群,推荐作为DataArts Studio管理中心数据连接的Agent代理使用,不建议同时作为Agent代理和运行数据迁移作业使用。 用于运行数据迁移作业的其他规格CDM集群可以在DataArts Studio控制台以增量包的形式购买,也可以在云数据迁移CDM服务控制台直接购买。二者差异体现在如下方面: 套餐计费:在DataArts Studio控制台购买的CDM集群,套餐计费时仅支持在DataArts Studio控制台购买的套餐包;在CDM控制台购买的CDM集群,套餐计费仅支持在云数据迁移CDM服务控制台购买的折扣套餐。 权限控制:在DataArts Studio控制台购买的CDM集群,按照DataArts Studio的权限体系进行权限管理;在CDM控制台购买的CDM集群,按照云数据迁移CDM服务的权限体系进行权限管理。 使用场景:在DataArts Studio控制台购买的CDM集群按工作空间隔离,需要在关联的工作空间使用;在CDM控制台购买的CDM集群,不支持DataArts Studio工作空间级别的资源隔离,所有DataArts Studio工作空间均可使用。 集群创建好以后不支持修改规格,如果需要使用更高规格的,需要重新创建一个集群。 CDM集群为ARM或X86版本,依赖于底层资源的架构。 CDM暂不支持控制迁移数据的速度,请避免在业务高峰期执行迁移数据的任务。 在迁移数据时CDM会对数据源端产生压力。建议创建新的数据库账号用于数据迁移,并配置账号策略用于以限制迁移对数据源端的资源消耗。例如可配置当CPU使用率超30%就清理该账号下的连接,从而避免影响业务。 当前CDM集群cdm.large实例规格网卡的基准/最大带宽为0.8/3 Gbps,单个实例一天传输数据量的理论极限值在8TB左右。同理,cdm.xlarge实例规格网卡的基准/最大带宽为4/10 Gbps,理论极限值在40TB左右;cdm.4xlarge实例规格网卡的基准/最大带宽为36/40 Gbps,理论极限值在360TB左右。对传输速度有要求的情况下可以使用多个数据集成实例实现。 上述数据量为理论极限值,实际传输数据量受数据源类型、源和目的数据源读写性能、带宽等多方面因素制约,实测cdm.large规格最大可达到约8TB每天(大文件迁移到OBS场景)。推荐用户在正式迁移前先用小数据量实测进行速度摸底。 迁移文件或对象时支持文件级增量迁移(通过配置跳过重复文件实现),但不支持断点续传。 例如要迁移3个文件,第2个文件迁移到一半时由于网络原因失败,再次启动迁移任务时,会跳过第1个文件,从第2个文件开始重新传,但不能从第2个文件失败的位置重新传。 文件迁移时,单个任务支持千万数量的文件,如果待迁移目录下文件过多,建议拆分到不同目录并创建多个任务。 用户在CDM上配置的连接和作业支持导出到本地保存,考虑到密码的安全性,CDM不会将对应数据源的连接密码导出。因此在将作业配置重新导入到CDM前,需要手工编辑导出的JSON文件补充密码或在导入窗口配置密码。 不支持集群自动升级到新版本,需要用户通过作业的导出和导入功能,实现升级到新版本。 在无OBS的场景下,CDM系统不会自动备份用户的作业配置,需要用户通过作业的导出功能进行备份。 如果配置了VPC对等连接,可能会出现对端VPC子网与CDM管理网重叠,从而无法访问对端VPC中数据源的情况。推荐使用公网做跨VPC数据迁移,或联系管理员在CDM后台为VPC对等连接添加特定路由。 CDM迁移,当目的端为DWS和NewSQL的时候,不支持将源端的主键和唯一索引等约束一起迁移过去。 CDM迁移作业时,需确保两个集群版本的JSON文件格式保持一致,才可以从将源集群的作业导入到目标集群。 作业运行过程中,任务异常中断,目标端已写入的部分数据不会清理,需手动清理。 单文件传输大小不超过1TB。
  • 云搜索服务和Elasticsearch数据源约束 CDM支持自动创建索引和类型,索引和类型名称只能全部小写,不能有大写。 索引下的字段类型创建后不能修改,只能创建新字段。 如果一定要修改字段类型,需要创建新索引或到Kibana上用Elasticsearch命令删除当前索引重新创建(数据也会删除)。 CDM自动创建的索引,字段类型为date时,要求数据格式为“yyyy-MM-dd HH:mm:ss.SSS Z”,即“2018-08-08 08:08:08.888 +08:00”。 迁移数据到云搜索服务时如果date字段的原始数据不满足格式要求,可以通过CDM的字段转换功能转换为上述格式。
  • 对象存储服务(OBS)数据源约束 迁移文件时系统会自动并发,任务配置中的“抽取并发数”无效。 不支持断点续传。CDM传文件失败会产生OBS碎片,需要用户到OBS控制台清理碎片文件避免空间占用。 不支持对象多版本的迁移。 增量迁移时,单个作业的源端目录下的文件数量或对象数量,根据CDM集群规格分别有如下限制:大规格集群30万、中规格集群20万、小规格集群10万。 如果单目录下文件或对象数量超过限制,需要按照子目录来拆分成多个迁移作业。
  • Hive数据源约束 Hive中使用Parquet格式存储时间戳数据时,时间戳的精度为纳秒级别(即精确到毫微秒),即2023-03-27 00:00:00.000。当源端数据精度大于纳秒级别时,字段映射时会对数据进行截取。例如源端数据为2023-03-27 00:00:00.12345,目的端数据会被截取为2023-03-27 00:00:00.123。 Hive作为迁移的目的时,如果存储格式为Textfile,在Hive创建表的语句中需要显式指定分隔符。例如: CREATE TABLE csv_tbl( smallint_value smallint, tinyint_value tinyint, int_value int, bigint_value bigint, float_value float, double_value double, decimal_value decimal(9, 7), timestmamp_value timestamp, date_value date, varchar_value varchar(100), string_value string, char_value char(20), boolean_value boolean, binary_value binary, varchar_null varchar(100), string_null string, char_null char(20), int_null int ) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' WITH SERDEPROPERTIES ( "separatorChar" = "\t", "quoteChar" = "'", "escapeChar" = "\\" ) STORED AS TEXTFILE;
  • 响应消息体(可选) 响应消息体通常以结构化格式返回,与响应消息头中Content-type对应,传递除响应消息头之外的内容。 对于“获取用户Token”接口,返回如下消息体。为篇幅起见,这里只展示部分内容。 { "token": { "expires_at": "2019-02-13T06:52:13.855000Z", "methods": [ "password" ], "catalog": [ { "endpoints": [ { "region_id": "xx-xx", ...... 当接口调用出错时,会返回错误码及错误信息说明,错误响应的Body体格式如下所示。 { "error_msg": "The format of message is error", "error_code": "AS.0001" } 其中,error_code表示错误码,error_msg表示错误描述信息。
  • 基本概念 账号 用户注册时的账号,账号对其所拥有的资源及云服务具有完全的访问权限,可以重置用户密码、分配用户权限等。由于账号是付费主体,为了确保账号安全,建议您不要直接使用账号进行日常管理工作,而是创建用户并使用该用户进行日常管理工作。 用户 由账号在IAM中创建的用户,是云服务的使用人员,具有身份凭证(密码和访问密钥)。 在我的凭证下,您可以查看账号ID和IAM用户ID。通常在调用API的鉴权过程中,您需要用到账号、用户和密码等信息。 区域(Region) 从地理位置和网络时延维度划分,同一个Region内共享弹性计算、块存储、对象存储、VPC网络、弹性公网IP、镜像等公共服务。Region分为通用Region和专属Region,通用Region指面向公共租户提供通用云服务的Region;专属Region指只承载同一类应用或只面向特定租户提供应用服务的专用Region。 详情请参见区域和可用区。 可用区(AZ,Availability Zone) 一个可用区是一个或多个物理数据中心的集合,有独立的风火水电,AZ内逻辑上再将计算、网络、存储等资源划分成多个集群。一个Region中的多个AZ间通过高速光纤相连,以满足用户跨AZ构建高可用性系统的需求。 项目 区域默认对应一个项目,这个项目由系统预置,用来隔离物理区域间的资源(计算资源、存储资源和网络资源),以默认项目为单位进行授权,用户可以访问您账号中该区域的所有资源。如果您希望进行更加精细的权限控制,可以在区域默认的项目中创建子项目,并在子项目中创建资源,然后以子项目为单位进行授权,使得用户仅能访问特定子项目中资源,使得资源的权限控制更加精确。 图1 项目隔离模型 同样在我的凭证下,您可以查看项目ID。 企业项目 企业项目是项目的升级版,针对企业不同项目间资源的分组和管理,是逻辑隔离。企业项目中可以包含多个区域的资源,且项目中的资源可以迁入迁出。 关于企业项目ID的获取及企业项目特性的详细信息,请参见《企业管理用户指南》。 父主题: 使用前必读
  • 调用API获取项目ID 项目ID还可通过调用查询指定条件下的项目信息API获取。 获取项目ID的接口为“GET https://{Endpoint}/v3/projects/”,其中{Endpoint}为IAM的终端节点,可以从地区和终端节点获取。 响应示例如下,其中projects下的“id”即为项目ID。 { "projects": [ { "domain_id": "65382450e8f64ac0870cd180d14e684b", "is_domain": false, "parent_id": "65382450e8f64ac0870cd180d14e684b", "name": "cn-north-4", "description": "", "links": { "next": null, "previous": null, "self": "https://www.example.com/v3/projects/a4a5d4098fb4474fa22cd05f897d6b99" }, "id": "a4a5d4098fb4474fa22cd05f897d6b99", "enabled": true } ], "links": { "next": null, "previous": null, "self": "https://www.example.com/v3/projects" } }
  • 请求方法 HTTP请求方法(也称为操作或动词),它告诉服务你正在请求什么类型的操作。 GET:请求服务器返回指定资源。 PUT:请求服务器更新指定资源。 POST:请求服务器新增资源或执行特殊操作。 DELETE:请求服务器删除指定资源,如删除对象等。 HEAD:请求服务器资源头部。 PATCH:请求服务器更新资源的部分内容。当资源不存在的时候,PATCH可能会去创建一个新的资源。 在“获取用户Token”的URI部分,您可以看到其请求方法为“POST”,则其请求为: POST https://Endpoint/v3/auth/tokens
  • 请求消息头 附加请求头字段,如指定的URI和HTTP方法所要求的字段。例如定义消息体类型的请求头“Content-Type”,请求鉴权信息等。 详细的公共请求消息头字段请参见表1。 表1 公共请求消息头 名称 描述 是否必选 示例 Host 请求的服务器信息,从服务API的URL中获取。值为hostname[:port]。端口缺省时使用默认的端口,https的默认端口为443。 否 使用AK/SK认证时该字段必选。 code.test.com or code.test.com:443 Content-Type 消息体的类型(格式)。推荐用户使用默认值application/json,有其他取值时会在具体接口中专门说明。 是 application/json Content-Length 请求body长度,单位为Byte。 否 3495 X-Project-Id project id,项目编号。 否 如果是专属云场景采用AK/SK认证方式的接口请求或者多project场景采用AK/SK认证的接口请求,则该字段必选。 e9993fc787d94b6c886cbaa340f9c0f4 X-Auth-Token 用户Token。 用户Token也就是调用获取用户Token接口的响应值,该接口是唯一不需要认证的接口。 请求响应成功后在响应消息头(Headers)中包含的“X-Subject-Token”的值即为Token值。 否 使用Token认证时该字段必选。 注:以下仅为Token示例片段。 MIIPAgYJKoZIhvcNAQcCo...ggg1BBIINPXsidG9rZ API同时支持使用AK/SK认证,AK/SK认证是使用SDK对请求进行签名,签名过程会自动往请求中添加Authorization(签名认证信息)和X-Sdk-Date(请求发送的时间)请求头。 AK/SK认证的详细说明请参见认证鉴权的“AK/SK认证”。 对于获取用户Token接口,由于不需要认证,所以只添加“Content-Type”即可,添加消息头后的请求如下所示。 1 2 POST https://endpoint/v3/auth/tokens Content-Type: application/json
共100000条