常见关系数据库作为目的端包括云数据库 MySQL、云数据库 SQL Server、云数据库 PostgreSQL。
将数据导入到以上数据源时,目的端作业参数如下表所示。
表 常见关系型数据库作为目的端时的作业参数
参数类型 | 参数名 | 说明 | 取值样例 |
---|---|---|---|
基本参数 | 模式或表空间 | 待写入数据的数据库名称,支持自动创建Schema。单击输入框后面的按钮可选择模式或表空间。 | schema |
基本参数 | 自动创表 | 只有当源端为关系数据库时,才有该参数。表示写入表数据时,用户选择的操作: 不自动创建:不自动建表。 不存在时创建:当目的端的数据库没有“表名”参数中指定的表时,CDM会自动创建该表。如果“表名”参数配置的表已存在,则不创建,数据写入到已存在的表中。 先删除后创建:CDM先删除“表名”参数中指定的表,然后再重新创建该表。 |
不自动创建 |
基本参数 | 表名 | 写入数据的目标表名,单击输入框后面的按钮可进入表的选择界面。 该参数支持配置为时间宏变量,且一个路径名中可以有多个宏定义变量。使用时间宏变量和定时任务配合,可以实现定期同步新增数据。 |
table |
基本参数 | 导入开始前 | 导入数据前,选择是否清除目的表的数据: 不清除:写入数据前不清除目标表中数据,数据追加写入。 清除全部数据:写入数据前会清除目标表中数据。 清除部分数据:需要配置“where条件”参数,CDM根据条件选择性删除目标表的数据。 |
清除部分数据 |
基本参数 | where条件 | “导入开始前”参数选择为“清除部分数据”时配置,配置后导入前根据where条件删除目的表的数据。 | age > 18 and age <= 60 |
基本参数 | 约束冲突处理 | 当迁移数据出现冲突时的处理方式。 insert into:当存在主键、唯一性索引冲突时,数据无法写入并将以脏数据的形式存在。 replace into:当存在主键、唯一性索引冲突时,会先删除原有行、再插入新行,替换原有行的所有字段。 on duplicate key update,当存在主键、唯一性索引冲突时,目的表中约束冲突的行除开唯一约束列的其他数据列将被更新。 |
insert into |
基本参数 | loader线程数 | 每个loader内部启动的线程数,可以提升写入并发数。 说明 不支持“约束冲突处理”策略为“replace into”或“on duplicate key update”的并发场景。 |
1 |
高级参数 | 先导入阶段表 | 如果选择“是”,则启用事务模式迁移,CDM会自动创建临时表,先将数据导入到该临时表,导入成功后再通过数据库的事务模式将数据迁移到目标表中,导入失败则将目的表回滚到作业开始之前的状态。 默认为“否”,CDM直接将数据导入到目的表。这种情况下如果作业执行失败,已经导入到目标表中的数据不会自动回滚。 说明 如果“导入开始前”选择“清除部分数据”或“清除全部数据”,CDM的事务模式不会回滚已经删除的数据。 |
否 |
高级参数 | 扩大字符字段长度 | 选择自动创表时,迁移过程中可将字符类型的字段长度扩大为原来的3倍,再写入到目的表中。如果源端数据库与目的端数据库字符编码不一样,但目的表字符类型字段与源表一样,在迁移数据时,可能会有出现长度不足的错误。 说明 当启动该功能时,也会导致部分字段消耗用户相应的3倍存储空间。 |
否 |
高级参数 | 使用非空约束 | 当选择自动创建目的表时,如果选择使用非空约束,则目的表字段的是否非空约束,与原表具有相应非空约束的字段保持一致。 | 是 |
高级参数 | 导入前准备语句 | 执行任务之前率先执行的SQL语句。目前向导模式仅允许执行一条SQL语句。 | create temp table |
高级参数 | 导入后完成语句 | 执行任务之后执行的SQL语句,目前仅允许执行一条SQL语句。 | merge into |