使用 DataX 将数据写入 MatrixOne
本文介绍如何使用 DataX 工具将 SQL Server 数据离线写入 MatrixOne 数据库。
开始前准备
在开始使用 DataX 将数据写入 MatrixOne 之前,需要完成安装以下软件:
- 完成单机部署 MatrixOne。
- 安装 JDK 8+ version。
- 安装 Python 3.8(or plus)。
- 下载 DataX 安装包,并解压。
- 下载 matrixonewriter.zip,解压至 DataX 项目根目录的
plugin/writer/
目录下。 - 已完成 SQL Server 2022。
- 安装 MySQL Client。
操作步骤
创建 sql server 测试数据
CREATE TABLE test.dbo.test2 (
id int NULL,
age int NULL,
name varchar(50) null
);
INSERT INTO test.dbo.test2
(id, age, name)
VALUES(1, 1, N'shdfhg '),
(4, 4, N' dhdhdf '),
(2, 2, N' ndgnh '),
(3, 3, N' dgh '),
(5, 5, N' dfghnd '),
(6, 6, N' dete ');
在 MatrixOne 中创建目标表
由于 DataX 只能同步数据,不能同步表结构,所以在执行任务前,我们需要先在目标数据库(MatrixOne)中手动创建好表。
CREATE TABLE test.test_2 (
id int not NULL,
age int NULL,
name varchar(50) null
);
创建作业配置文件
DataX 中的任务配置文件是 json 格式,可以通过下面的命令查看内置的任务配置模板:
python datax.py -r sqlserverreader -w matrixonewriter
进入到 datax/job 路径,根据模板,编写作业文件 sqlserver2mo.json
:
{
"job": {
"content": [
{
"reader": {
"name": "sqlserverreader",
"parameter": {
"column": ["id","age","name"],
"connection": [
{
"jdbcUrl": ["jdbc:sqlserver://xx.xx.xx.xx:1433;databaseName=test"],
"table": ["dbo.test2"]
}
],
"password": "123456",
"username": "sa"
}
},
"writer": {
"name": "matrixonewriter",
"parameter": {
"column": ["id","age","name"],
"connection": [
{
"jdbcUrl": "jdbc:mysql://xx.xx.xx:6001/test",
"table": ["test_2"]
}
],
"password": "111",
"username": "root",
"writeMode": "insert"
}
}
}
],
"setting": {
"speed": {
"channel": "1"
}
}
}
}
启动 datax 作业
python datax.py sqlserver2mo.json
查看 mo 表中数据
select * from test_2;