一、环境准备
具体环境搭建请参考DataXGitHub仓库
二、将源库表结构导入目标库
建议使用Navicat工具导出源库表结构,然后执行sql到目标库
三、准备需要的文件
- 批量执行脚本 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": "xxxx",
// 数据库连接密码
"password": "xxxx",
"column": ["*"], //*代表所有字段
"connection": [
{
"table": [
"$source_table_name" //变量
],
"jdbcUrl": [
"jdbc:oracle:thin:@[HOST_NAME]:PORT:[DATABASE_NAME]"
]
}
],
"fetchSize": 1024
}
},
// 写数据库
"writer": {
"name": "oraclereader",
"parameter": {
// 数据库连接用户名
"username": "xxxx",
// 数据库连接密码
"password": "xxxx",
"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