DataX数据迁移

DataX数据迁移

访问DataX Web管理页面:

http://ip:9527/index.html

用户名:admin,密码:123456

在这里插入图片描述

本文中示例将SqlServer数据增量同步到MySql中。

  1. 增量同步
  2. 同步时,MySql中的新字段设置默认值

1. 查看执行器是否注册成功

DataX 和DataX Web环境部署完成后,在执行器管理中,可以看到自动注册成功一个datax执行器。

在这里插入图片描述

2. 新增数据源

我们需要实现sqlserver同步数据到mysql,需要配置两个数据源。

在这里插入图片描述

3. 新建项目

任务是以项目维度管理,在新增任务时,需要配置项目名称。所以我们先新建一个项目。

在这里插入图片描述

4. 新建任务模板

创建一个任务模板,每30s执行一次任务。

在这里插入图片描述

5. 任务构建

通过任务构建的配置生成datax可以识别的json配置。

  1. 构建reader

    时间增量: update_time >=REPLACE(${lastTime},'%', ' ') and update_time < REPLACE(${currentTime},'%', ' ')
    

    在这里插入图片描述

    注意:

    • 有where条件时,sql语句可以不写,默认是select *
    • 根据时间增量时,lastTime和currentTime是两个变量,名称可以自定义,在后面的配置中注意匹配就可以
    • 我在配置时,使用REPLACE(${lastTime},‘%’, ’ ') ,将时间中的%替换成空格。是因为我的sqlserver表中update_time字段是datetime类型,格式为yyyy-MM-dd HH:mm:ss,但是在执行任务时,通过查看日志发现,查询的sql中,变量的时间是yyyy-MM-dd%HH:mm:ss这种格式,导致查询报错。所以我使用了REPLACE函数替换%,此处具体配置要看自己的环境。
  2. 构建writer

    在这里插入图片描述

  3. 选择需要映射的字段

    在这里插入图片描述

  4. 构建

    在这里插入图片描述

    配置完成后,点击下一步,此时进入任务管理页面,我们可以看到构建好的一个任务。

    在这里插入图片描述

6. 修改任务

由于我们需要增量同步,并且要对status配置默认值,之前的构建过程中,并没有传入时间参数的位置,也没有配置默认参数的位置。所以我们需要对任务进行修改。

  1. 在任务管理中点击编辑

    在这里插入图片描述

  2. 配置时间自增

    在这里插入图片描述

    • 辅助参数选择时间自增
    • 增量开始时间即第一次执行的起始时间,自定义设置
    • 增量时间格式选择匹配数据库中的时间格式
    • 增量时间字段 -DlastTime=‘%s’ -DcurrentTime=‘%s’
      • -D是datax参数的标识符,必须这么写
      • -D后面的lastTime和currentTime是传入where条件的参数名,可自定义名称。和我们之前配置sql的变量名匹配上就行。
      • %s是用来替换变量的占位符
      • -DlastTime=‘%s’和-DcurrentTime=’%s’中间有一个空格,并且必须是一个空格
  3. 配置status默认值

    我们之前提到,reader和writer的字段必须一一对应,但是之前的配置中,writer比reader多一个status字段,我们需要配置默认参数。

    修改自动生成的json配置,在reader的column中增加一个一个字段,“‘启用’ as status”,意思为:给status字段默认赋值为启用,由于是字符串类型,所以启用也需要加引号。

    在这里插入图片描述

  4. 至此,修改完成,保存后,启动任务。

7. 查看任务执行日志

在这里插入图片描述

### DataX 数据迁移使用指南 DataX 是阿里巴巴开源的一款异构数据源离线同步工具,支持多种主流数据库之间的数据传输。以下是关于 DataX数据迁移方法、示例配置及相关常见问题的详细介绍。 #### 一、DataX 数据迁移的核心概念 DataX 提供了一种基于 JSON 配置文件的方式来进行数据迁移任务的设计与执行。每一个迁移任务都需要一个特定的 `json` 文件来描述其操作逻辑[^3]。这些文件通常被称为作业配置文件,它们包含了以下几个核心部分: - **Reader 插件**:用于指定从哪个数据源读取数据。 - **Writer 插件**:用于指定向哪个目标端写入数据。 - **Channel 数量**:控制并发度以提升性能。 - **字段映射关系**:定义源表和目标表之间列的对应关系。 #### 二、MongoDB 到 MySQL 的数据迁移实例 对于 MongoDB 和 MySQL 这样的跨数据库类型场景,可以通过编写合适的 JSON 配置实现高效的数据迁移。下面是一个简单的例子: ```json { "job": { "content": [ { "reader": { "name": "mongodbreader", "parameter": { "column": ["_id", "field1", "field2"], "condition": "{}", "mongoQuery": "{status: 'active'}", "dbUrl": "mongodb://localhost:27017/", "dbName": "test_db", "collectionName": "source_collection" } }, "writer": { "name": "mysqlwriter", "parameter": { "writeMode": "insert", "username": "root", "password": "your_password", "connection": [ { "jdbcUrl": "jdbc:mysql://localhost:3306/target_db?useUnicode=true&characterEncoding=UTF-8", "table": ["target_table"] } ], "preSql": [], "postSql": [] } } } ] } } ``` 上述代码片段展示了如何设置从 MongoDB 中提取数据并将其插入到 MySQL 表中的过程[^1]。注意调整其中涉及的实际连接字符串、用户名/密码以及其他参数以匹配您的具体环境需求。 #### 三、Oracle 至 Oracle 的同构迁移案例 当面对两个相同类型的数据库(如 Oracle),可以利用更简洁明了的方式来完成整个流程。这里给出一段典型的 job.json 示例作为参考: ```json { "job": { "setting": {}, "content": [ { "reader": { "name": "oraclereader", "parameter": { "username": "scott", "password": "tiger", "connection": [ { "querySql": ["SELECT * FROM source_table WHERE status='ACTIVE'"], "jdbcUrl": ["jdbc:oracle:thin:@//host:port/service_name"] } ] } }, "writer": { "name": "oraclewriter", "parameter": { "writeMode": "insert", "username": "hr", "password": "hrpwd", "connection": [ { "jdbcUrl": "jdbc:oracle:thin:@//dest_host:port/service_name", "table": ["destination_table"] } ] } } } ] } } ``` 此段脚本说明了怎样把来自某个 Oracle 实例内的记录迁移到另一个不同的 Oracle 库里去[^2]。 #### 四、常见错误及其解决办法 尽管 DataX 功能强大,但在实际应用过程中仍可能出现一些典型的问题。以下列举几个常见的状况及解决方案: 1. **无法加载插件**: 如果遇到找不到 reader 或 writer 组件的情况,请确认已正确安装所需模块,并检查路径是否无误[^4]。 2. **权限不足导致失败**: 当报错提示缺乏访问资源的权利时,则需核实所提供的账户是否有足够的授权级别。 3. **网络连通性异常**: 若因网络原因造成通讯中断,应确保两端服务器间能够正常通信且防火墙规则允许相应端口开放。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值