DataX批量表迁移指南

618 阅读1分钟

一、将源库表结构导入目标库

二、准备需要的文件

  • 批量执行脚本 xxx.sh
#!/bin/bash
#function:
#version:1.0
#author:hongle
#time:2022-08-26

#定义文件与命令执行路径
v_table_list=' xxxxxxxx/datax/job/tableName.txt'
v_exec_command=' xxxxxx/datax/bin/datax.py'
v_path_json=' xxxxxxxxx/datax/job/xxxx.json'

#定义参数
v_source_table_name=''
v_target_table_name=''

#从table_name.txt获取表名、表记录数并计算分片
for table_name in `cat $v_table_list`
do
		#get table_name
        	v_source_table_name=`echo $table_name|awk -F ":" '{print $1}'`
			v_target_table_name=`echo $table_name|awk -F ":" '{print $2}'`
		
			$v_exec_command -p "\
			-Dsource_table_name=${v_source_table_name} \
			-Dtarget_table_name=${v_target_table_name} \
			" $v_path_json
done
  • Json文件 xxx.json(例:oracle迁移oracle)
{
    "job": {
        "setting": {
            "speed": {
                "byte": 1048576
            },
            "errorLimit": {
                "record": 0,
                "percentage": 0.02
            }
        },
        "content": [
            {
                // 读数据库
                "reader": {
                    "name": "oraclereader",
                    "parameter": {
                        // 数据库连接用户名
                        "username": "root",
                        // 数据库连接密码
                        "password": "root",
						"column": ["*"],            //*代表所有字段
                        "connection": [
                            {
                                "table": [
                                    "$source_table_name"  		//变量
                                ],                                
                                "jdbcUrl": [
                                    "jdbc:oracle:thin:@[HOST_NAME]:PORT:[DATABASE_NAME]"
                                ]
                            }
                        ],
                        "fetchSize": 1024
                    }
                },
                // 写数据库
				"writer": {
                    "name": "oraclereader",
                    "parameter": {
                        // 数据库连接用户名
                        "username": "root",
                        // 数据库连接密码
                        "password": "root",
                        "column": ["*"],
                        "connection": [
                            {
                                "table": [
                                    "$target_table_name"		//变量
                                ],
								"jdbcUrl": [
                                    "jdbc:oracle:thin:@[HOST_NAME]:PORT:[DATABASE_NAME]"
                                ]
                            }
                        ]
                    }
                }
            }
        ]
    }
}
  • table_name.txt
数据源表名称:目标源表名称
数据源表名称:目标源表名称
数据源表名称:目标源表名称
数据源表名称:目标源表名称
数据源表名称:目标源表名称
数据源表名称:目标源表名称
数据源表名称:目标源表名称
数据源表名称:目标源表名称
数据源表名称:目标源表名称
数据源表名称:目标源表名称
...

二、将文件放入对应文件夹下

1、将xxx.sh放/datax/script下
2、将xxx.json放在/datax/job下
3、将table_name.txt放在/datax/job下

三、进入/datax/script目录下执行命令

sh xxx.sh