使用通道服务、DataWorks或者DataX将表格存储数据表中的数据同步到另一个数据表。

前提条件

已创建目标数据表。具体操作,请参见创建数据表

注意 目标数据表的列必须与源数据表中待迁移的列一一对应。

使用通道服务迁移同步

创建源数据表的通道后,使用SDK进行迁移同步。迁移过程中可以自定义业务处理逻辑对数据进行处理。

  1. 使用表格存储控制台或SDK创建源数据表的通道并记录通道ID,具体操作请分别参见快速入门使用SDK
  2. 使用SDK迁移数据。

    示例代码如下:

    public class TunnelTest {
    
        public static void main(String[] args){
           TunnelClient tunnelClient = new TunnelClient("endpoint",
                   "accessKeyId","accessKeySecret","instanceName");
    
            TunnelWorkerConfig config = new TunnelWorkerConfig(new SimpleProcessor());
    
            //tunnelId可以在表格存储控制台通道管理页面查看或者调用describeTunnelRequest查询。
            TunnelWorker worker = new TunnelWorker("tunnelId", tunnelClient, config);
            try {
                worker.connectAndWorking();
            } catch (Exception e) {
                e.printStackTrace();
                worker.shutdown();
                tunnelClient.shutdown();
            }
        }
    
        public static class SimpleProcessor implements IChannelProcessor{
        
           //目标tablestore连接对象。
           TunnelClient tunnelClient = new TunnelClient("endpoint",
                   "accessKeyId","accessKeySecret","instanceName");
                   
           @Override
            public void process(ProcessRecordsInput processRecordsInput) {
            
                //ProcessRecordsInput中返回了增量或全量数据。
                List<StreamRecord> list = processRecordsInput.getRecords();
                for(StreamRecord streamRecord : list){
                    switch (streamRecord.getRecordType()){
                        case PUT:
                            //自定义业务处理逻辑。
                            //putRow
                            break;
                        case UPDATE:
                            //updateRow
                            break;
                        case DELETE:
                            //deleteRow
                            break;
                    }
    
                    System.out.println(streamRecord.toString());
                }
            }
    
            @Override
            public void shutdown() {
                
            }
        }
    }

使用DataWorks或者DataX迁移同步

通过DataWorks或者DataX实现表格存储数据的迁移同步,此处以DataWorks为例介绍迁移操作。

  1. 新增表格存储数据源。

    分别以源数据表和目标数据表所在实例新增表格存储数据源。具体操作,请参见步骤一:新增数据源

  2. 新建同步任务节点。
    1. 以项目管理员身份登录DataWorks控制台
      说明 仅项目管理员角色可以新增数据源,其他角色的成员仅可查看数据源。
    2. 在左侧导航栏,单击工作空间列表后,选择地域。
    3. 工作空间列表页面,单击目标工作空间操作栏中的数据开发
    4. 在DataStudio控制台的数据开发页面,单击业务流程节点下的目标业务流程。

      如果需要新建业务流程,请参见创建业务流程

    5. 数据集成节点上右键选择新建节点 > 离线同步
    6. 新建节点对话框,输入名称,单击提交
  3. 配置数据源。
    1. 数据集成节点下,双击同步任务节点。
    2. 在同步任务节点的编辑页面的选择数据源区域,配置数据来源和数据去向。
      选择数据来源数据去向数据源OTS并分别设置为源数据表和目标数据表对应的数据源,然后单击script图标或者单击点击转换为脚本,进行脚本配置。
      注意 表格存储仅支持脚本模式配置。
      • 配置Tablestore(OTS) Reader

        Tablestore(OTS) Reader插件实现了从Tablestore读取数据,通过您指定的抽取数据范围,可以方便地实现数据增量抽取的需求。具体操作,请参见配置Tablestore(OTS) Reader

      • 配置Tablestore(OTS) Writer

        Tablestore(OTS) Writer通过Tablestore官方Java SDK连接到Tablestore服务端,并通过SDK写入Tablestore服务端 。Tablestore Writer本身对于写入过程进行了诸多优化,包括写入超时重试、异常写入重试、批量提交等功能。具体操作,请参见配置Tablestore(OTS) Writer

    3. 单击save图标,保存数据源配置。
  4. 运行同步任务。
    1. 单击start图标。
    2. 参数对话框,选择调度的资源组。
    3. 单击确定,开始运行任务。

      运行结束后,在运行日志页签中可以查看任务是否成功和导出的数据行数。

  5. (可选)定时执行同步任务。具体操作,请参见步骤三:定时执行同步任务