华为云用户手册

  • 场景二 场景描述 当数据库从低版本迁移到高版本后,业务无法连接数据库,报错如下: unsupported authentication method requested by the server: 10 原因分析 低版本实例的“password_encryption”参数值为“md5”,迁移到高版本后,高版本实例的“password_encryption”参数默认值为“scram-sha-256”,重新修改参数值为“md5”,由于未重置密码,导致密码认证方式失败,业务无法连接。 解决方案 “password_encryption”参数修改后,重置密码使之生效。
  • 影响 原“ GaussDB (for openGauss)”更名为GaussDB,相关URL变更请参考GaussDB华为云帮助中心地址切换。 原“GaussDB(for MySQL)”名称保持不变,相关URL变更请参考GaussDB(for MySQL)华为云帮助中心地址切换。 由于更名涉及内容较多,时间较长,更名期间,原“GaussDB(for openGauss)”的计费名称会暂时挂靠在GaussDB(for MySQL)名下,但费用和资源不会有任何变化,该产品的功能使用以及您的业务不会受任何影响。 更名以后原页面URL将只给云数据库 GaussDB使用 ,云数据库 GaussDB(for MySQL)产品控制台请访问产品新页面URL。
  • 设置binlog_row_image为FULL步骤 如果源数据库为云上RDS实例,可通过RDS管理界面的参数配置,将binlog_row_image修改为FULL,完成修改后重启源数据库并重置任务即可。 云数据库RDS for MySQL 8.0版本的binlog_row_image参数默认值为FULL,您无需进行设置。 如果源数据库为本地自建库,请参考如下步骤修复。 登录MySQL源数据库所在服务器。 手动修改my.cnf配置文件,将binlog_row_image参数值修改为FULL后保存。 binlog_row_image=full 为了关闭旧的session,需选择一个非业务时间段,重启源数据库并重置任务。
  • 授权操作说明 创建用户 操作方式: CREATE USER 'username'@'host' IDENTIFIED BY 'password'; · username:待创建的账号。 · host:允许该账号登录的主机,如果允许该账号从任意主机登录数据库,可以使用%。 · password:账号的密码。 例如:授予drsmigration账号具备所有数据库和表的所有权限,并允许从任意主机登录数据库,命令如下。 CREATE USER 'drsmigration'@'%' IDENTIFIED BY 'Drs123456'; 授予相应权限 操作方式: GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION; flush privileges; · privileges:授予该账号的操作权限,如SELECT、INSERT、UPDATE等,如果要授予该账号所有权限,则使用ALL · databasename:数据库名。如果要授予该账号具备所有数据库的操作权限,则使用*。 · tablename:表名。如果要授予该账号具备所有表的操作权限,则使用*。 · username:待授权的账号。 · host:允许该账号登录的主机,如果允许该账号从任意主机登录,则使用%。 · WITH GRANT OPTION:授予该账号使用GRANT命令的权限,该参数为可选。 例如:创建一个账号,账号名为drsmigration,密码为Drs123456,并允许从任意主机登录数据库,命令如下。 GRANT ALL ON *.* TO 'drsmigration'@'%';
  • 权限要求 源和目标库的连接账号需要具有登录权限,如果没有该账号,可以通过如下方式创建,以user1为例。 参考语句:CREATE USER 'user1'@'host' IDENTIFIED BY 'password'; DRS的实时迁移、实时同步、实时灾备功能的权限要求,表1 权限要求中以user1为例提供参考语句。 表1 权限要求及参考语句 功能模块 源/业务数据库 目标/灾备数据库 实时迁移 全量迁移权限要求: SELECT、SHOW VIEW、EVENT。 参考语句:GRANT SELECT, SHOW VIEW, EVENT ON *.* TO 'user1'; 全量+增量迁移权限要求: SELECT、SHOW VIEW、EVENT、LOCK TABLES、REPLICATION SLAVE、REPLICATION CLIENT。 其中,REPLICATION SLAVE、REPLICATION CLIENT是全局权限,必须单独开启。参考语句如下: GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'user1'; SELECT、SHOW VIEW、EVENT、LOCK TABLES是非全局权限,参考语句如下: GRANT SELECT, SHOW VIEW, EVENT, LOCK TABLES ON [待迁移数据库].* TO 'user1'; 全量迁移权限要求: SELECT、CREATE、ALTER、DROP、DELETE、INSERT、UPDATE、INDEX、EVENT、CREATE VIEW、CREATE ROUTINE、TRIGGER、REFEREN CES 、WITH GRANT OPTION。当目标库为8.0.14-8.0.18版本时,还需要有SESSION_VARIABLES_ADMIN权限。 参考语句:GRANT SELECT, CREATE, ALTER, DROP, DELETE, INSERT, UPDATE, INDEX, EVENT, CREATE VIEW, CREATE ROUTINE, TRIGGER ON *.* TO 'user1' WITH GRANT OPTION; 全量+增量迁移权限要求: SELECT、CREATE、ALTER、DROP、DELETE、INSERT、UPDATE、INDEX、EVENT、CREATE VIEW、CREATE ROUTINE、TRIGGER、REFERENCES、WITH GRANT OPTION。当目标库为8.0.14-8.0.18版本时,还需要有SESSION_VARIABLES_ADMIN权限。 参考语句:GRANT SELECT, CREATE, ALTER, DROP, DELETE, INSERT, UPDATE, INDEX, EVENT, CREATE VIEW, CREATE ROUTINE, TRIGGER, REFERENCES ON [待迁移数据库].* TO 'user1' WITH GRANT OPTION; 实时同步 SELECT、SHOW VIEW、EVENT、LOCK TABLES、REPLICATION SLAVE、REPLICATION CLIENT。 其中,REPLICATION SLAVE、REPLICATION CLIENT是全局权限,必须单独开启。参考语句如下: GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'user1'; SELECT、SHOW VIEW、EVENT、LOCK TABLES是非全局权限,参考语句如下: GRANT SELECT, SHOW VIEW, EVENT, LOCK TABLES ON [待同步数据库].* TO 'user1'; SELECT、CREATE、DROP、DELETE、INSERT、UPDATE、ALTER、CREATE VIEW、CREATE ROUTINE、REFERENCES。 参考语句:GRANT SELECT, CREATE, DROP, DELETE, INSERT, UPDATE, ALTER, REFERENCES ON [待同步数据库].* TO 'user1'; 实时灾备 SELECT、CREATE、ALTER、DROP、DELETE、INSERT、UPDATE、TRIGGER、REFERENCES、SHOW VIEW、EVENT、INDEX、LOCK TABLES、CREATE VIEW、 CREATE ROUTINE、 ALTER ROUTINE、 CREATE USER、RELOAD、REPLICATION SLAVE、REPLICATION CLIENT、WITH GRANT OPTION,RDS for MySQL实例的root账户默认已具备上述权限。当业务数据库为8.0.14-8.0.18版本时,还需要有SESSION_VARIABLES_ADMIN权限。 参考语句:GRANT SELECT,CREATE,ALTER,DROP,DELETE,INSERT,UPDATE,TRIGGER,SHOW VIEW,EVENT,INDEX,LOCK TABLES,CREATE VIEW,CREATE ROUTINE,ALTER ROUTINE,CREATE USER,RELOAD,REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'user1'; SELECT、CREATE、ALTER、DROP、DELETE、INSERT、UPDATE、TRIGGER、REFERENCES、SHOW VIEW、EVENT、INDEX、LOCK TABLES、CREATE VIEW、 CREATE ROUTINE、 ALTER ROUTINE、 CREATE USER、RELOAD、REPLICATION SLAVE、REPLICATION CLIENT、WITH GRANT OPTION,RDS for MySQL实例的root账户默认已具备上述权限。当灾备数据库为8.0.14-8.0.18版本时,还需要有SESSION_VARIABLES_ADMIN权限。 参考语句:GRANT SELECT,CREATE,ALTER,DROP,DELETE,INSERT,UPDATE,TRIGGER,REFERENCES,SHOW VIEW,EVENT,INDEX,LOCK TABLES,CREATE VIEW,CREATE ROUTINE,ALTER ROUTINE,CREATE USER,RELOAD,REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'user1'@'%' WITH GRANT OPTION; 请在以上参考语句后执行flush privileges;使授权生效。
  • 分片设计规范 对于使用DDS分片集群,建议尽可能的使用分片集合以充分利用性能,详情请参见设置数据分片以充分利用分片性能。 分片集合使用上建议如下: 对于大数据量(数据量过百万),并有较高读写请求的业务场景,数据量随着业务量增大而增大的,建议采用分片。 对于采用hash分片的集合,需要根据业务后面实际数据量大小,采用预分片,提前预置chunk数量,减少自动均衡和分裂对业务运行造成影响。 对于非空集合开启分片,应将均衡器的开启时间窗放在业务空闲时,避免分片间均衡数据与业务冲突影响性能。设置时间窗口的API接口详情请参见设置集群均衡活动时间窗。 需要基于分片键排序查询且增加数据时可以分布均匀建议使用范围分片,其他使用哈希分片。 合理设计shard key,防止出现大量的数据使用相同shard key,导致出现jumbo chunk。 使用分片集群,执行dropDatabase后,一定要执行flushRouterConfig命令,详情请参见如何规避mongos路由缓存缺陷。 业务的update请求需要注意与片键相适配。在使用分片表时,如果出现如下场景则update请求会报错,并返回“An upsert on a sharded collection must contain the shard key and have the simple collation”。 update请求的filter中未携带片键字段且选项multi:false set中未携带片键字段且选项upsert:true
  • 账户说明 为了给文档数据库实例提供管理服务,您在创建数据库实例时,文档数据库服务会自动为实例创建根账户root(或admin)、监控账户monitor和备份账户backup,这些账户属于华为云实例管理平台,您不能操作或者使用。如果试图删掉、重命名、修改这些账户的密码和权限,会导致出错。 对于数据库管理员账户rwuser,以及您所创建的账户,允许修改账户的密码。 默认账户rwuser以及通过rwuser创建的账户,对系统库admin和config权限受限,无法进行正常操作。对自身创建的库表,具有充分的操作权限。 MongoDB的User一般是在某个固定的认证库下创建的。连接数据库时,需要通过参数--authenticationDatabase来明确指定对应的认证库。 DDS实例中,默认的rwuser用户的认证库,是admin。
  • 创建账户 选择admin数据库。 use admin 以user1账户为例,创建数据库账户。 db.createUser({user: "user1", pwd: "****", passwordDigestor:"server", roles:[{role: "root", db: "admin"}]}) “server”是指在服务端加密密码,为固定值,无需修改。 “****”是新密码,长度8~32位,且必须为英文大小写字母、数字以及特殊字符~@#%-_!*+=^?的组合。 “roles”限制了该账户所具有的权限。若指定一个空数组,表示该账户不具有任何权限。 查看创建结果。 显示如下信息,说明创建成功。 Successfully added user: { "user" : "user1", "passwordDigestor" : "server", "roles" : [ { "role" : "root", "db" : "admin" } ] }
  • 账户密码等级设置 文档数据库服务在控制台侧管理员密码的安全策略: 密码长度为8~32个字符。 密码必须为英文大小写字母、数字、特殊字符~!@#%^*-_=+?()$的组合。 文档数据库对在客户端新创的数据库用户,设置了密码安全策略: 密码长度为8~32个字符。 密码为英文大小写字母、数字、特殊字符~@#%-_!*+=^?的组合。 创建实例数据库以及设置密码时,安全起见,为用户提供了密码复杂度校验,如果不满足要求,请根据提示信息调整密码复杂度。
  • DDS各版本的生命周期规划 在正式EOM/EOS前会发布公告,在此期间客户可以通过 数据复制服务 将版本在EOS之前切换到高版本。 EOM:End of Marketing,停止该版本的销售。 EOS:End of Service & support,停止该版本的服务,建议您在执行作业时选择最新版本的引擎。在该日期之后,不再提供该软件版本的任何技术服务支持。 表1 DDS各版本生命周期规划表 版本 计划EOM时间 计划EOS时间 3.4 2023年6月 2025年6月 4.0 2025年4月 2027年4月 4.2 2026年4月 2028年4月 4.4 2027年4月 2029年4月
  • Token认证 Token的有效期为24小时,需要使用一个Token鉴权时,可以先缓存起来,避免频繁调用。 Token在计算机系统中代表令牌(临时)的意思,拥有Token就代表拥有某种权限。Token认证就是在调用API的时候将Token加到请求消息头中,从而通过身份认证,获得操作API的权限。Token可通过调用获取用户Token接口获取。 调用本服务API需要项目级别的Token,即调用获取用户Token接口时,请求body中auth.scope的取值需要选择project,如下所示。 { "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": "username", // IAM 用户名 "password": "********", //IAM用户密码 "domain": { "name": "domainname" //IAM用户所属账号名 } } } }, "scope": { "project": { "name": "xxxxxxxx" //项目名称 } } } } 获取Token 后,再调用其他接口时,您需要在请求消息头中添加“X-Auth-Token”,其值即为Token。例如Token值为“ABCDEFJ....”,则调用接口时将“X-Auth-Token: ABCDEFJ....”加到请求消息头即可,如下所示。 1 2 3 POST https://iam.cn-north-1.myhuaweicloud.com/v3/auth/projects Content-Type: application/json X-Auth-Token: ABCDEFJ.... 您还可以通过这个视频教程了解如何使用Token认证:https://bbs.huaweicloud.com/videos/101333。
  • AK/SK认证 AK/SK签名认证方式仅支持消息体大小在12MB以内,12MB以上的请求请使用Token认证。 AK/SK认证就是使用AK/SK对请求进行签名,在请求时将签名信息添加到消息头,从而通过身份认证。 AK(Access Key ID):访问密钥ID。与私有访问密钥关联的唯一标识符;访问密钥ID和私有访问密钥一起使用,对请求进行加密签名。 SK(Secret Access Key):私有访问密钥。与访问密钥ID结合使用,对请求进行加密签名,可标识发送方,并防止请求被修改。 使用AK/SK认证时,您可以基于签名算法使用AK/SK对请求进行签名,也可以使用专门的签名SDK对请求进行签名。详细的签名方法和SDK使用方法请参见API签名指南。 签名SDK只提供签名功能,与服务提供的SDK不同,使用时请注意。
  • 配置MongoDB/DDS源端参数 从MongoDB、DDS迁移数据时, CDM 会读取集合的首行数据作为字段列表样例,如果首行数据未包含该集合的所有字段,用户需要自己手工添加字段。 作业中源连接为MongoDB连接时,即从本地MongoDB或DDS导出数据时,源端作业参数如表1所示。 表1 MongoDB/DDS作为源端时的作业参数 参数类型 参数名 说明 取值样例 基本参数 数据库名称 选择待迁移的数据库。 mongodb 集合名称 相当于关系数据库的表名。单击输入框后面的按钮可进入选择集合名的界面,用户也可以直接输入集合名称。 如果选择界面没有待选择的表,请确认表是否已经创建,或者对应连接里的账号是否有元数据查询的权限。 COLLECTION 高级属性 查询筛选 创建用于匹配文档的筛选条件,CDM只迁移符合条件的数据。例如: 按表达式对象筛选:例如{'last_name': 'Smith'},表示查找所有“last_name”属性值为“Smith”的文档。 按参数选项筛选:例如{ x : "john" }, { z : 1 },表示查找x=john的所有z字段。 按条件筛选:例如{ "field" : { $gt: 5 } },表示查找field字段中大于5的值。 按时间宏筛选:例如 {"ts":{$gte:ISODate("${dateformat(yyyy-MM-dd'T'HH:mm:ss.SSS'Z',-1,HOUR)}")}},表示查找ts字段中大于时间宏转换后的值。 {'last_name': 'Smith'} 父主题: 配置作业源端参数
  • 示例流程 图1 IAM用户授权流程 创建用户组并授权 在IAM控制台创建用户组,并授予CDM集群只读权限“CDM ReadOnlyAccess”。 创建用户并加入用户组 在IAM控制台创建用户,并将其加入1中创建的用户组。 用户登录并验证权限 新创建的用户登录控制台,切换至授权区域,验证权限: 在“服务列表”中选择“ 云数据迁移 服务”,进入CDM主界面查看集群,若未提示权限不足,表示“CDM ReadOnlyAccess”已生效。 在“服务列表”中选择除CDM服务外的任一服务,若提示权限不足,表示“CDM ReadOnlyAccess”已生效。
  • 配置DIS源端参数 消息体中的数据是一条类似 CS V格式的记录,可以支持多种分隔符。不支持二进制格式或其他格式的消息内容解析。 作业中源连接为DIS连接时,源端作业参数如所表1示。 表1 DIS作为源端时的作业参数 参数类型 参数 说明 取值样例 基本参数 DIS通道 DIS的通道名。 dis 是否持久运行 用户自定义是否永久运行。设置为长久运行的任务,如果DIS系统发生中断,任务也会失败结束。 是 DIS分区ID DIS分区ID,该参数支持输入多个分区ID,使用英文逗号(,)分隔。 0,1,2 偏移量参数 设置从DIS拉取数据时的初始偏移量: 最新:最大偏移量,即拉取最新的数据。 上次停止处:从上次停止处继续读取。 最早:最小偏移量,即拉取最早的数据。 最新 APP名字 配置用户数据消费程序的唯一标识符,不存在时会自动创建。 cdm 数据格式 解析数据时使用的格式: 二进制格式:适用于文件迁移场景,不解析数据内容原样传输。 CSV格式:以CSV格式解析源数据。 JSON格式:以JSON格式解析源数据。 二进制格式 字段分隔符 数据格式为“CSV格式”时呈现此参数。默认为逗号,使用Tab键作为分隔符请输入“\t”。 , 记录分隔符 数据格式为“CSV格式”或“JSON格式”时呈现此参数。用于配置每条记录之间的分割符。 , 高级属性 最大消息数/poll 可选参数,每次向DIS请求数据限制最大请求记录数。 100 父主题: 配置作业源端参数
  • 配置Redis源端参数 第三方云的Redis服务无法支持作为源端。如果是用户在本地数据中心或ECS上自行搭建的Redis支持作为源端或目的端。 作业中源连接为从本地Redis导出的数据时,源端作业参数如表1所示。 表1 Redis作为源端时的作业参数 参数类型 参数名 说明 取值样例 基本参数 Redis键前缀 键的前缀,类似关系型数据库的表名。 TABLE 值存储类型 仅支持以下数据格式: STRING:不带列名,如“值1,值2”形式。 HASH:带列名,如“列名1=值1,列名2=值2”的形式。 STRING 高级属性 键分隔符 用来分隔关系型数据库的表和列名。 _ 值分隔符 以STRING方式存储时,列之间的分隔符。 ; 字段相同 “值存储类型”参数值为“HASH”显示该参数。 哈希键内有相同的字段。 是 父主题: 配置作业源端参数
  • 配置DDS目的端参数 作业中目的连接为DDS连接时,即导入数据到文档数据库服务(DDS)时,目的端作业参数如表1所示。 表1 DDS作为目的端时的作业参数 参数名 说明 取值样例 数据库名称 选择待导入数据的数据库。 ddsdb 集合名称 选择待导入数据的集合,相当于关系数据库的表名。单击输入框后面的按钮可进入表的选择界面,用户也可以直接输入表名称。 如果选择界面没有待选择的表,请确认表是否已经创建,或者对应连接里的账号是否有元数据查询的权限。 COLLECTION 父主题: 配置作业目的端参数
  • 配置 DLI 源端参数 作业中源连接为DLI连接时,源端作业参数如表1所示。 表1 DLI作为源端时的作业参数 参数名 说明 取值样例 资源队列 选择目的表所属的资源队列。 DLI的default队列无法在迁移作业中使用,您需要在DLI中新建SQL队列。 cdm 数据库名称 写入数据的数据库名称。 dli 表名 写入数据的表名。 car_detail 分区 用于抽取分区的信息。 year=2020,location=sun 父主题: 配置作业源端参数
  • 配置MongoDB目的端参数 作业中目的连接为MongoDB连接时,目的端作业参数如表1所示。 表1 MongoDB作为目的端时的作业参数 参数名 说明 取值样例 数据库名称 选择待导入数据的数据库。 mddb 集合名称 选择待导入数据的集合,相当于关系数据库的表名。单击输入框后面的按钮可进入表的选择界面,用户也可以直接输入表名称。 如果选择界面没有待选择的表,请确认表是否已经创建,或者对应连接里的账号是否有元数据查询的权限。 COLLECTION 迁移行为 将记录迁移到MongoDB目的端时,选择需要进行的插入行为操作。 新增:将文件记录直接插入指定的集合。 有则新增,无则替换:以指定的过滤键作为查询条件。如果在集合中找到匹配的记录,则替换该记录(找到多条匹配记录时,只会替换找到的第一条记录)。如果不存在,则添加新记录。 替换:使用指定的过滤键作为查询条件。如果在集合中找到匹配的记录,则替换该记录(找到多条匹配记录时,只会替换找到的第一条记录)。如果没有,则不会添加新记录。 新增 导入前准备语句 执行任务前需要先执行的MongoDB查询语句。 说明: “导入前准备语句”格式是json,只有两个键值对,第一个键值对是配置操作类别,key是"type",value只支持"remove"和"drop"。第二个键值对是针对不同操作类别,需要配置的数据条件或者集合名称。 导入前准备语句的执行不会影响即将写入的数据内容。 {"type":"remove","json":"{$or:[{Pid:{$gt:'0',$lt:'2'}},{X:{$gt:'50',$lt:'80'}}]}"} 父主题: 配置作业目的端参数
  • 配置Hive目的端参数 作业中目的连接为Hive连接时,目的端作业参数如表1所示。 表1 Hive作为目的端时的作业参数 参数名 说明 取值样例 数据库名称 输入或选择写入数据的数据库名称。单击输入框后面的按钮可进入数据库选择界面。 default 表名 输入或选择写入数据的目标表名。单击输入框后面的按钮可进入表的选择界面。 该参数支持配置为时间宏变量,且一个路径名中可以有多个宏定义变量。使用时间宏变量和定时任务配合,可以实现定期同步新增数据,详细说明请参见使用时间宏变量完成增量同步。 说明: 如果配置了时间宏变量,通过 DataArts Studio 数据开发调度CDM迁移作业时,系统会将时间宏变量替换为(数据开发作业计划启动时间-偏移量),而不是(CDM作业实际启动时间-偏移量)。 TBL_X 自动创表 只有当源端为关系数据库时,才有该参数。表示写入表数据时,用户选择的操作: 不自动创建:不自动建表。 不存在时创建:当目的端的数据库没有“表名”参数中指定的表时,CDM会自动创建该表。如果“表名”参数配置的表已存在,则不创建,数据写入到已存在的表中。 先删除后创建:CDM先删除“表名”参数中指定的表,然后再重新创建该表。 说明: 自动建表只同步列注释,表注释不会被同步。 自动建表不支持同步主键。 不自动创建 导入前清空数据 选择目的端表中数据的处理方式: 是:任务启动前会清除目标表中数据。 否:导入前不清空目标表中的数据,如果选“否”且表中有数据,则数据会追加到已有的表中。 是 待清空分区 “导入前清空数据”设置为“是”时,呈现此参数。 填写待清空分区信息后,表示清空该分区的数据。 单分区:year=2020,location=sun; 多分区:['year=2020,location=sun', 'year=2021,location=earth']. 执行Analyze语句 数据全部写入完成后会异步执行ANALYZE TABLE语句,用于优化Hive表查询速度,执行的SQL如下: 非分区表:ANALYZE TABLE tablename COMPUTE STATIS TICS 分区表:ANALYZE TABLE tablename PARTITION(partcol1[=val1], partcol2[=val2], ...) COMPUTE STATISTICS 说明: “执行Analyze语句”参数配置仅用于单表迁移场景。 是 Hive作为目的端时,会自动创建存储格式为ORC的表。 由于文件格式限制,当前仅支持ORC与Parquet格式写入复杂类型。 源端Hive包含array和map类型时,目的端表格式只支持ORC和parquet复杂类型。若目的端表格式为RC和TEXT时,会对源数据进行处理,支持成功写入。 因map类型为无序的数据结构,迁移到目的端的数据类型可能跟源端顺序不一致。 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; 父主题: 配置作业目的端参数
  • 配置OpenTSDB目的端参数 作业中目的连接为CloudTable OpenTSDB连接时,目的端作业参数如表1所示。 表1 OpenTSDB作为目的端时的作业参数 参数名 说明 取值样例 指标 可选参数,输入指标名称,或选择OpenTSDB中已存在的指标。 city.temp 时间 可选参数,记录数据的时间点,格式为yyyyMMddHHmmdd的字符串或时间戳。 1598870800 标记 可选参数,可在这里自定义数据的标签。 tagk:tagv, tagk2:tagv2 父主题: 配置作业目的端参数
  • 配置HDFS目的端参数 作业中目的连接为HDFS连接时,目的端作业参数如表1所示。 表1 HDFS作为目的端时的作业参数 参数名 说明 取值样例 写入目录 写入数据到HDFS服务器的目录。 该参数支持配置为时间宏变量,且一个路径名中可以有多个宏定义变量。使用时间宏变量和定时任务配合,可以实现定期同步新增数据,详细说明请参见使用时间宏变量完成增量同步。 说明: 如果配置了时间宏变量,通过DataArts Studio数据开发调度CDM迁移作业时,系统会将时间宏变量替换为(数据开发作业计划启动时间-偏移量),而不是(CDM作业实际启动时间-偏移量)。 /user/output 文件格式 写入后的文件格式,可选择以下文件格式: CSV格式:按CSV格式写入,适用于数据表到文件的迁移。 二进制格式:选择“二进制格式”时不解析文件内容直接传输,CDM会原样写入文件,不改变原始文件格式,适用于文件到文件的迁移。 如果是文件类数据源(FTP/SFTP/HDFS/OBS)之间相互迁移数据,此处的“文件格式”只能选择与源端的文件格式一致。 CSV格式 重复文件处理方式 当源端为文件类数据源(HTTP/FTP/SFTP/HDFS/OBS)时配置。 只有文件名和文件大小都相同才会判定为重复文件。写入时如果出现文件重复,可选择如下处理方式: 替换重复文件 跳过重复文件 停止任务 停止任务 压缩格式 写入文件后,选择对文件的压缩格式。支持以下压缩格式: NONE:不压缩。 DEFLATE:压缩为DEFLATE格式。 GZIP:压缩为GZIP格式。 BZIP2:压缩为BZIP2格式。 LZ4:压缩为LZ4格式。 SNAPPY:压缩为SNAPPY格式。 SNAPPY 换行符 文件中的换行符,默认自动识别“\n”、“\r”或“\r\n”。“文件格式”为“二进制格式”时该参数值无效。 \n 字段分隔符 文件中的字段分隔符。“文件格式”为“二进制格式”时该参数值无效。 , 使用包围符 “文件格式”为“CSV格式”,才有该参数,用于将数据库的表迁移到文件系统的场景。 选择“是”时,如果源端数据表中的某一个字段内容包含字段分隔符或换行符,写入目的端时CDM会使用双引号(")作为包围符将该字段内容括起来,作为一个整体存储,避免其中的字段分隔符误将一个字段分隔成两个,或者换行符误将字段换行。例如:数据库中某字段为hello,world,使用包围符后,导出到CSV文件的时候数据为"hello,world"。 否 首行为标题行 在迁移表到CSV文件时,CDM默认是不迁移表的标题行,如果该参数选择“是”,CDM在才会将表的标题行数据写入文件。 否 写入到临时文件 将二进制文件先写入到临时文件(临时文件以“.tmp”作为后缀),迁移成功后,再进行rename或move操作,在目的端恢复文件。 否 作业成功标识文件 当作业执行成功时,会在写入目录下生成一个标识文件,文件名由用户指定。不指定时默认关闭该功能。 finish.txt 自定义目录层次 支持用户自定义文件的目录层次。例如:【表名】/【年】/【月】/【日】/【数据文件名】. csv - 目录层次 指定文件的目录层次,支持时间宏(时间格式为yyyy/MM/dd)。不填默认为不带层次目录。 说明: 源端为关系型数据库数据源时,目录层次为源端表名+自定义目录,其他场景下为自定义目录。 ${dateformat(yyyy/MM/dd, -1, DAY)} 加密方式 “文件格式”选择“二进制格式”时,该参数才显示。 选择是否对写入的数据进行加密: 无:不加密,直接写入数据。 AES-256-GCM:使用长度为256byte的AES对称加密算法,目前加密算法只支持AES-256-GCM(NoPadding)。该参数在目的端为加密,在源端为解密。 详细使用方法请参见迁移文件时加解密。 AES-256-GCM 数据加密 密钥 “加密方式”选择“AES-256-GCM”时显示该参数,密钥由长度64的十六进制数组成。 请您牢记这里配置的“数据加密密钥”,解密时的密钥与这里配置的必须一致。如果不一致系统不会报异常,只是解密出来的数据会错误。 DD0AE00DFECD78BF051BCFDA25BD4E320DB0A7AC75A1F3FC3D3C56A457DCDC1B 初始化向量 “加密方式”选择“AES-256-GCM”时显示该参数,初始化向量由长度32的十六进制数组成。 请您牢记这里配置的“初始化向量”,解密时的初始化向量与这里配置的必须一致。如果不一致系统不会报异常,只是解密出来的数据会错误。 5C91687BA886EDCD12ACBC3FF19A3C3F HDFS文件编码只能为“UTF-8”,故HDFS不支持设置文件编码类型。 父主题: 配置作业目的端参数
  • 二进制格式 如果想要在文件系统间按原样复制文件,则可以选择二进制格式。二进制格式传输文件到文件的速率、性能都最优,且不需要在作业第二步进行字段匹配。 文件传输的目录结构 CDM的文件传输,支持单文件,也支持一次传输目录下所有的文件。传输到目的端后,目录结构会保持原样。 增量迁移文件 使用CDM进行二进制传输文件时,目的端有一个参数“重复文件处理方式”,可以用作文件的增量迁移,具体请参见文件增量迁移。 增量迁移文件的时候,选择“重复文件处理方式”为“跳过重复文件”,这样如果源端有新增的文件,或者是迁移过程中出现了失败,只需要再次运行任务,已经迁移过的文件就不会再次迁移。 写入到临时文件 二进制迁移文件时候,可以在目的端指定是否写入到临时文件。如果指定了该参数,在文件复制过程中,会将文件先写入到一个临时文件中,迁移成功后,再进行rename或move操作,在目的端恢复文件。 生成文件MD5值 对每个传输的文件都生成一个MD5值,并将该值记录在一个新文件中,新文件以“.md5”作为后缀,并且可以指定MD5值生成的目录。
  • 文件格式问题解决方法 数据库的数据导出到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此时读取会造成重复写入或者是读取失败。所以,可以在源端作业参数中指定启动作业标识文件为“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*”。
  • 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对象”,然后在作业第二步进行字段匹配即可。 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”,然后在作业第二步进行字段匹配。 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数组”,然后在作业第二步进行字段匹配。 took timedOut total maxScore 190 false 1000001 1.0 191 false 1000002 1.0 示例四:在解析JSON文件的时候搭配转换器。在示例二前提下,想要把hits.max_score字段附加到所有记录中,即以如下格式写入到数据库中: 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 配置字段转换器
  • 配置MongoDB目的端参数 作业中目的连接为MongoDB连接时,目的端作业参数如表1所示。 表1 MongoDB作为目的端时的作业参数 参数名 说明 取值样例 数据库名称 选择待导入数据的数据库。 mddb 集合名称 选择待导入数据的集合,相当于关系数据库的表名。单击输入框后面的按钮可进入表的选择界面,用户也可以直接输入表名称。 如果选择界面没有待选择的表,请确认表是否已经创建,或者对应连接里的账号是否有元数据查询的权限。 COLLECTION 迁移行为 将记录迁移到MongoDB目的端时,选择需要进行的插入行为操作。 新增:将文件记录直接插入指定的集合。 有则新增,无则替换:以指定的过滤键作为查询条件。如果在集合中找到匹配的记录,则替换该记录(找到多条匹配记录时,只会替换找到的第一条记录)。如果不存在,则添加新记录。 替换:使用指定的过滤键作为查询条件。如果在集合中找到匹配的记录,则替换该记录(找到多条匹配记录时,只会替换找到的第一条记录)。如果没有,则不会添加新记录。 新增 导入前准备语句 执行任务前需要先执行的MongoDB查询语句。 说明: “导入前准备语句”格式是json,只有两个键值对,第一个键值对是配置操作类别,key是"type",value只支持"remove"和"drop"。第二个键值对是针对不同操作类别,需要配置的数据条件或者集合名称。 导入前准备语句的执行不会影响即将写入的数据内容。 {"type":"remove","json":"{$or:[{Pid:{$gt:'0',$lt:'2'}},{X:{$gt:'50',$lt:'80'}}]}"} 父主题: 配置作业目的端参数
  • 配置FTP/SFTP源端参数 作业中源连接为FTP/SFTP连接时,源端作业参数如表1所示。 高级属性里的参数为可选参数,默认隐藏,单击界面上的“显示高级属性”后显示。 表1 FTP/SFTP作为源端时的作业参数 参数类型 参数名 说明 取值样例 基本参数 源目录或文件 待迁移数据的目录或单个文件路径。文件路径支持输入多个文件(最多50个),默认以“|”分隔,也可以自定义文件分隔符,具体请参见文件列表迁移。 待迁移数据的目录,将迁移目录下的所有文件(包括所有嵌套子目录及其子文件)。 该参数支持配置为时间宏变量,且一个路径名中可以有多个宏定义变量。使用时间宏变量和定时任务配合,可以实现定期同步新增数据,详细说明请参见使用时间宏变量完成增量同步。 说明: 如果配置了时间宏变量,通过DataArts Studio数据开发调度CDM迁移作业时,系统会将时间宏变量替换为(数据开发作业计划启动时间-偏移量),而不是(CDM作业实际启动时间-偏移量)。 /ftp/a.csv|/ftp/b.txt 文件格式 指CDM以哪种格式解析数据,可选择以下格式: CSV格式:以CSV格式解析源文件,用于迁移文件到数据表的场景。 二进制格式:选择“二进制格式”时不解析文件内容直接传输,不要求文件格式必须为二进制。适用于文件到文件的原样复制。 JSON格式:以JSON格式解析源文件,一般都是用于迁移文件到数据表的场景。 说明: 当目的端为OBS数据源时,仅支持配置二进制格式。 CSV格式 JSON类型 当“文件格式”选择为“JSON格式”时,才有该参数。JSON文件中存储的JSON对象的类型,可以选择“JSON对象”或“JSON数组”。 JSON对象 记录节点 当“文件格式”选择为“JSON格式”并且“JSON类型”为“JSON对象”时,才有该参数。对该JSON节点下的数据进行解析,如果该节点对应的数据为JSON数组,那么系统会以同一模式从该数组中提取数据。多层嵌套的JSON节点以字符“.”分割。 data.list 高级属性 使用rfc4180解析器 当“文件格式”选择为“CSV格式”时,才有该参数。是否使用rfc4180解析器解析CSV文件。 否 换行符· 文件中的换行符,默认自动识别“\n”、“\r”或“\r\n”。当“文件格式”选择为“CSV格式”时,才有该参数。 \n 字段分隔符 文件中的字段分隔符,使用Tab键作为分隔符请输入“\t”。当“文件格式”选择为“CSV格式”时,才有该参数。 , 使用包围符 选择“是”时,包围符内的字段分隔符会被视为字符串值的一部分,目前CDM默认的包围符为:"。 否 使用转义符 选择“是”时,CSV数据行中的\作为转义符使用。 选择“否”时,CSV中的\作为数据不会进行转义。CSV只支持\作为转义符。 是 使用正则表达式分隔字段 选择是否使用正则表达式分隔字段,当选择“是”时,“字段分隔符”参数无效。当“文件格式”选择为“CSV格式”时,才有该参数。 是 正则表达式 当“使用正则表达式分隔字段”选择为“是”时,才有该参数。 分隔字段的正则表达式,正则表达式写法请参考正则表达式分隔半结构化文本。 ^(\d.*\d) (\w*) \[(.*)\] ([\w\.]*) (\w.*).* 首行为标题行 “文件格式”选择“CSV格式”时才有该参数。在迁移CSV文件到表时,CDM默认是全部写入,如果该参数选择“是”,CDM会将CSV文件的前N行数据作为标题行,不写入目的端的表。 是 编码类型 文件编码类型,例如:“UTF-8”或“GBK”。只有文本文件可以设置编码类型,当“文件格式”选择为“二进制格式”时,该参数值无效。 UTF-8 压缩格式 选择对应压缩格式的源文件: 无:表示传输所有格式的文件。 GZIP:表示只传输GZIP格式的文件。 ZIP:表示只传输ZIP格式的文件。 TAR.GZ:表示只传输TAR.GZ格式的文件。 无 压缩文件后缀 压缩格式非无时,显示该参数。 该参数需要解压缩的文件后缀名。当一批文件中以该值为后缀时,才会执行解压缩操作,否则则保持原样传输。当输入*或为空时,所有文件都会被解压。 * 启动作业标识文件 选择是否开启作业标识文件的功能。当源端路径下存在启动作业的标识文件时才启动作业,否则会挂起等待一段时间,等待时长在下方“等待时间”中配置。 是 文件分隔符 “源目录或文件”参数中如果输入的是多个文件路径,CDM使用这里配置的文件分隔符来区分各个文件,默认为|。 | 标识文件名 选择开启作业标识文件的功能时,需要指定启动作业的标识文件名。指定文件后,只有在源端路径下存在该文件的情况下才会运行任务。该文件本身不会被迁移。 ok.txt 等待时间 选择开启作业标识文件的功能时,如果源路径下不存在启动作业的标识文件,作业挂机等待的时长,当超时后任务会失败。 等待时间设置为0时,当源端路径下不存在标识文件,任务会立即失败。 单位:秒。 10 过滤类型 满足过滤条件的路径或文件会被传输,该参数有“无”、“通配符”和“正则表达式”三种选择。具体使用方法可参见文件增量迁移。 无 目录过滤器 “过滤类型”选择“通配符”和“正则表达式”时,符合过滤器规则的目录,允许进行迁移。支持配置多个路径,中间使用“,”分隔。 说明: 如果配置了时间宏变量,通过DataArts Studio数据开发调度CDM迁移作业时,系统会将时间宏变量替换为(数据开发作业计划启动时间-偏移量),而不是(CDM作业实际启动时间-偏移量)。 *input,*out 文件过滤器 “过滤类型”选择“通配符”和“正则表达式”时,符合过滤器规则的文件,允许进行迁移。支持配置多个文件,中间使用“,”分隔。 说明: 如果配置了时间宏变量,通过DataArts Studio数据开发调度CDM迁移作业时,系统会将时间宏变量替换为(数据开发作业计划启动时间-偏移量),而不是(CDM作业实际启动时间-偏移量)。 *.csv 时间过滤 选择“是”时,可以根据文件的修改时间,选择性的传输文件。 是 起始时间 “时间过滤”选择“是”时,可以指定一个时间值,当文件的修改时间大于等于该时间才会被传输,输入的时间格式需为“yyyy-MM-dd HH:mm:ss”。 该参数支持配置为时间宏变量,例如${timestamp(dateformat(yyyy-MM-dd HH:mm:ss,-90,DAY))}表示:只迁移最近90天内的文件。 说明: 如果配置了时间宏变量,通过DataArts Studio数据开发调度CDM迁移作业时,系统会将时间宏变量替换为(数据开发作业计划启动时间-偏移量),而不是(CDM作业实际启动时间-偏移量)。 2019-07-01 00:00:00 终止时间 “时间过滤”选择“是”时,可以指定一个时间值,当文件的修改时间小于该时间才会被传输,输入的时间格式需为“yyyy-MM-dd HH:mm:ss”。 该参数支持配置为时间宏变量,例如${timestamp(dateformat(yyyy-MM-dd HH:mm:ss))}表示:只迁移修改时间为当前时间以前的文件。 说明: 如果配置了时间宏变量,通过DataArts Studio数据开发调度CDM迁移作业时,系统会将时间宏变量替换为(数据开发作业计划启动时间-偏移量),而不是(CDM作业实际启动时间-偏移量)。 2019-07-30 00:00:00 忽略不存在原路径/文件 如果将其设为“是”,那么作业在源路径不存在的情况下也能成功执行。 否 标识文件类型 选择开启作业标识文件的功能时,该参数才显示。 MARK_DONE:只有在源端路径下存在标识文件的情况下才会执行迁移任务。 MARK_DOING:只有在源端路径下不存在标识文件的情况下才会执行迁移任务。 MARK_DOING 是否跳过空行 “文件格式”选择“CSV格式”时,该参数才显示。 如果某行数据为空,则跳过此行。 否 null值 “文件格式”选择“二进制格式”时,该参数才显示。 由于文本文件中无法用字符串定义null值,此配置项定义将何种字符串标识为null。 否 MD5文件名后缀 “文件格式”选择“二进制格式”时,该参数才显示。 校验CDM抽取的文件,是否与源文件一致,详细请参见MD5校验文件一致性。 .md5 父主题: 配置作业源端参数
  • 配置DDS目的端参数 作业中目的连接为DDS连接时,即导入数据到文档数据库服务(DDS)时,目的端作业参数如表1所示。 表1 DDS作为目的端时的作业参数 参数名 说明 取值样例 数据库名称 选择待导入数据的数据库。 ddsdb 集合名称 选择待导入数据的集合,相当于关系数据库的表名。单击输入框后面的按钮可进入表的选择界面,用户也可以直接输入表名称。 如果选择界面没有待选择的表,请确认表是否已经创建,或者对应连接里的账号是否有元数据查询的权限。 COLLECTION 父主题: 配置作业目的端参数
  • 配置MongoDB/DDS源端参数 从MongoDB、DDS迁移数据时,CDM会读取集合的首行数据作为字段列表样例,如果首行数据未包含该集合的所有字段,用户需要自己手工添加字段。 作业中源连接为MongoDB连接时,即从本地MongoDB或DDS导出数据时,源端作业参数如表1所示。 表1 MongoDB/DDS作为源端时的作业参数 参数类型 参数名 说明 取值样例 基本参数 数据库名称 选择待迁移的数据库。 mongodb 集合名称 相当于关系数据库的表名。单击输入框后面的按钮可进入选择集合名的界面,用户也可以直接输入集合名称。 如果选择界面没有待选择的表,请确认表是否已经创建,或者对应连接里的账号是否有元数据查询的权限。 COLLECTION 高级属性 查询筛选 创建用于匹配文档的筛选条件,CDM只迁移符合条件的数据。例如: 按表达式对象筛选:例如{'last_name': 'Smith'},表示查找所有“last_name”属性值为“Smith”的文档。 按参数选项筛选:例如{ x : "john" }, { z : 1 },表示查找x=john的所有z字段。 按条件筛选:例如{ "field" : { $gt: 5 } },表示查找field字段中大于5的值。 按时间宏筛选:例如 {"ts":{$gte:ISODate("${dateformat(yyyy-MM-dd'T'HH:mm:ss.SSS'Z',-1,HOUR)}")}},表示查找ts字段中大于时间宏转换后的值。 {'last_name': 'Smith'} 父主题: 配置作业源端参数
共100000条