datax异步离线数据库同步工具

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.若用代码实现,则可以用在网站中,即可随时将数据转移。也可以设置任务,在一次操作数据时,同时更新到多个数据源中去。

 

你可能感兴趣的:(数据库)