1.下载datax压缩包http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz
2.确认window中安装了python,推荐python2.7或2.6,3以上的语言不兼容。
3.在C:\Users\Mac\Desktop\datax\datax\job\job.json中配置读写的数据源,可以用多哥json,切换多个数据源。
4.执行python C:\Users\Mac\Desktop\datax\datax\bin\datax.py C:\Users\Mac\Desktop\datax\datax\job\job.json即可,将会把job.json中的reader中的表读取数据,在将数据write到第二个数据源表中。
5.job.json中数据:
{
"job": {
"content": [{
"reader": {
"name": "mysqlreader",//数据库名
"parameter": {
"column": [//表列名
"id",
"name",
"sex"
],
"connection": [{
"jdbcUrl": ["jdbc:mysql://127.0.0.1:3306/dq?characterEncoding=utf8"],
"table": ["table1"]//要操作的表名
}],
"password": "root",
"username": "root"
}
},
"writer": {
"preSql": [ "delete from test" // 预执行SQL,可以选择一个delete语句,在写入sql语言前执行这个语句],
"writeMode": "insert", // 写入模式可以选择insert/replace/update
"name": "mysqlwriter",
"parameter": {
"column": [
"id",
"name",
"sex"
],
"connection": [{
"jdbcUrl": "jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8",
"table": ["table2"]
}],
"password": "root",
"username": "root"
}
}
}],
"setting": {
"speed": {
"byte":1048576,
"channel": "1"
}
}
}
}
6.也可以不用命令执行,代码实现:
public static void main(String[] args) {
try {
System.out.println("start");
String windowcmd = "cmd /c python C:/Users/Mac/Desktop/datax/datax/bin/datax.py -p \" -Dusername=root -Dpassword=root -DjdbcUrl=jdbc:mysql://127.0.0.1:3306/dq \" C:/Users/Mac/Desktop/datax/datax/job/job.json";
System.out.println(windowcmd);
Process pr = Runtime.getRuntime().exec(windowcmd);
BufferedReader in = new BufferedReader(new InputStreamReader(pr.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
System.out.println(line);
}
in.close();
pr.waitFor();
System.out.println("end");
} catch (Exception e) {
e.printStackTrace();
}
}
注意:使用-Dxxx=tableName 可以将参数xxx传入到job.json中,即可动态修改数据源。
7.若用代码实现,则可以用在网站中,即可随时将数据转移。也可以设置任务,在一次操作数据时,同时更新到多个数据源中去。