跳到主要内容

使用 DataX 从 MySQL 迁移数据

在本教程中,您将使用 DataX 将数据从 MySQL 加载到 Databend。开始之前,请确保您已在环境中成功部署 Databend、MySQL 和 DataX。

  1. 在 MySQL 中创建一个用于数据加载的 SQL 用户,然后创建表并填充示例数据。
在 MySQL 中执行:
mysql> create user 'mysqlu1'@'%' identified by 'databend';
mysql> grant all on *.* to 'mysqlu1'@'%';
mysql> create database db;
mysql> create table db.tb01(id int, d double, t TIMESTAMP, col1 varchar(10));
mysql> insert into db.tb01 values(1, 3.1,now(), 'test1'), (1, 4.1,now(), 'test2'), (1, 4.1,now(), 'test2');
  1. 在 Databend 中创建对应的目标表。
备注

DataX 的数据类型在加载到 Databend 时可以转换为 Databend 的数据类型。有关 DataX 数据类型与 Databend 数据类型的对应关系,请参考以下链接的文档:https://github.com/alibaba/DataX/blob/master/databendwriter/doc/databendwriter.md#33-type-convert

在 Databend 中执行:
databend> create database migrated_db;
databend> create table migrated_db.tb01(id int null, d double null, t TIMESTAMP null, col1 varchar(10) null);
  1. 将以下代码复制粘贴到文件中,并将文件命名为 mysql_demo.json。可用参数及其说明请参考以下链接的文档:https://github.com/alibaba/DataX/blob/master/databendwriter/doc/databendwriter.md#32-configuration-description
mysql_demo.json
{
"job": {
"content": [
{
"reader": {
"name": "mysqlreader",
"parameter": {
"username": "mysqlu1",
"password": "databend",
"column": [
"id", "d", "t", "col1"
],
"connection": [
{
"jdbcUrl": [
"jdbc:mysql://127.0.0.1:3307/db"
],
"driver": "com.mysql.jdbc.Driver",
"table": [
"tb01"
]
}
]
}
},
"writer": {
"name": "databendwriter",
"parameter": {
"username": "databend",
"password": "databend",
"column": [
"id", "d", "t", "col1"
],
"preSql": [
],
"postSql": [
],
"connection": [
{
"jdbcUrl": "jdbc:databend://localhost:8000/migrated_db",
"table": [
"tb01"
]
}
]
}
}
}
],
"setting": {
"speed": {
"channel": 1
}
}
}
}
提示

上述代码配置了 DatabendWriter 的 INSERT 模式。要切换到 REPLACE 模式,必须包含 writeMode 和 onConflictColumn 参数。例如:

mysql_demo.json
...
"writer": {
"name": "databendwriter",
"parameter": {
"writeMode": "replace",
"onConflictColumn":["id"],
"username": ...
  1. 运行 DataX:
cd {YOUR_DATAX_DIR_BIN}
python datax.py ./mysql_demo.json

完成!要验证数据加载,请在 Databend 中执行查询:

databend> select * from migrated_db.tb01;
+------+------+----------------------------+-------+
| id | d | t | col1 |
+------+------+----------------------------+-------+
| 1 | 3.1 | 2023-02-01 07:11:08.500000 | test1 |
| 1 | 4.1 | 2023-02-01 07:11:08.501000 | test2 |
| 1 | 4.1 | 2023-02-01 07:11:08.501000 | test2 |
+------+------+----------------------------+-------+