Skip to content

使用 DataX 将数据写入 MatrixOne

本文介绍如何使用 DataX 工具将 TiDB 数据离线写入 MatrixOne 数据库。

开始前准备

在开始使用 DataX 将数据写入 MatrixOne 之前,需要完成安装以下软件:

操作步骤

在 TiDB 中创建测试数据

CREATE TABLE `tidb_dx` (
    `id` bigint(20) NOT NULL,
    `name` varchar(100) DEFAULT NULL,
    `salary` decimal(10,0) DEFAULT NULL,
    `age` int(11) DEFAULT NULL,
    `entrytime` date DEFAULT NULL,
    `gender` char(1) DEFAULT NULL,
    PRIMARY KEY (`id`)
);

insert into testdx2tidb values
(1,"lisa",15660,30,'2022-10-12',0),
(2,"tom",15060,24,'2021-11-10',1),
(3,"jenny",15000,28,'2024-02-19',0),
(4,"henry",12660,24,'2022-04-22',1);

在 MatrixOne 中创建目标表

由于 DataX 只能同步数据,不能同步表结构,所以在执行任务前,我们需要先在目标数据库(MatrixOne)中手动创建好表。

CREATE TABLE `testdx2tidb` (
    `id` bigint(20) NOT NULL COMMENT "",
    `name` varchar(100) NULL COMMENT "",
    `salary` decimal(10, 0) NULL COMMENT "",
    `age` int(11) NULL COMMENT "",
    `entrytime` date NULL COMMENT "",
    `gender` varchar(1) NULL COMMENT "",
    PRIMARY KEY (`id`)
);

配置 json 文件

tidb 可以直接使用 mysqlreader 读取。在 datax 的 job 目录下。编辑配置文件 tidb2mo.json

{
   "job": {
        "setting": {
            "speed": {
                 "channel": 1
            },
            "errorLimit": {
                "record": 0,
                "percentage": 0
            }
        },
        "content": [
            {
                "reader": {
                    "name": "mysqlreader",
                    "parameter": {
                        "username": "root",
                        "password": "root",
                        "column": [ "*" ],
                        "splitPk": "id",
                        "connection": [
                            {
                                "table": [ "tidb_dx" ],
                                "jdbcUrl": [
                                   "jdbc:mysql://xx.xx.xx.xx:4000/test"
                                ]
                            }
                        ]
                    }
                },
                "writer": {
                     "name": "matrixonewriter",
                    "parameter": {
                        "column": ["*"],
                        "connection": [
                            {
                                "jdbcUrl": "jdbc:mysql://xx.xx.xx.xx:6001/test",
                                "table": ["testdx2tidb"]
                            }
                        ],
                        "password": "111",
                        "username": "root",
                        "writeMode": "insert"
                    }
                }
            }
        ]
    }
}

执行任务

python bin/datax.py job/tidb2mo.json

在 MatrixOne 中查看目标表数据

mysql> select * from testdx2tidb;
+------+-------+--------+------+------------+--------+
| id   | name  | salary | age  | entrytime  | gender |
+------+-------+--------+------+------------+--------+
|    1 | lisa  |  15660 |   30 | 2022-10-12 | 0      |
|    2 | tom   |  15060 |   24 | 2021-11-10 | 1      |
|    3 | jenny |  15000 |   28 | 2024-02-19 | 0      |
|    4 | henry |  12660 |   24 | 2022-04-22 | 1      |
+------+-------+--------+------+------------+--------+
4 rows in set (0.01 sec)

数据导入成功。