DataX 数据迁移

1、前期准备

    Linux系统
    Python(最好是2)
    Jdk 1.8以上

2、安装Python2

--更新软件包

sudo apt update

--安装python2
sudo apt install python2

--查看python版本
python2 --version

3、下载DataX

Linux下载DataX

wget http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz

解压

tar -zxvf datax.tar.gz

4、增加DataX Job(DataX数据迁移任务)

读取库:SQL Server

写入库:MongoDB

SqlServerToMongodb.json内容如下

{
	"job": {
		"setting": {
			"speed": {
				"channel": 5
			}
		},
		"content": [{
			"reader": {
				"name": "sqlserverreader",
				"parameter": {
					"username": "用户名",
					"password": "密码",
					"column": [
						"id",
						"version",
						"created",
						"modified",
						"code",
						"name"
					],
					"splitPk": "pk",
					"where": "",
					"connection": [{
						"table": ["EMPLOYEE"],
						"jdbcUrl": ["jdbc:sqlserver://127.0.0.1:1433;DatabaseName=TEST"]
					}]
				}
			},
			"writer": {
				"name": "mongodbwriter",
				"parameter": {
					"address": ["127.0.0.1:27017"],
					"userName": "datax",
					"userPassword": "datax",
					"dbName": "TEST",
					"collectionName": "employee",
					"column": [{
						"name": "id",
						"type": "string"
					}, {
						"name": "version",
						"type": "int"
					}, {

						"name": "created",
						"type": "date"
					}, {
						"name": "modified",
						"type": "date"
					}, {
						"name": "code",
						"type": "string"
					}, {
						"name": "name",
						"type": "string"
					}]
				}
			}
		}]
	}
}
字段名描述
channeldatax线程数(分几个线程执行)
其他参数查看下面参考资料

本文是SqlServerToMongodb的示例,其他查看github里面其他库的读写文档

参考资料:

GitHub - alibaba/DataX: DataX是阿里云DataWorks数据集成的开源版本。

https://github.com/alibaba/DataX/blob/master/sqlserverreader/doc/sqlserverreader.md

https://github.com/alibaba/DataX/blob/master/mongodbwriter/doc/mongodbwriter.md

5、启动任务

进入bin目录

执行命令(具体目录以自己放的位置为主):

python2 datax.py ../job/SqlServerToMongodb.json

### DataX 数据迁移使用指南 DataX 是阿里巴巴开源的一款异构数据源离线同步工具,支持多种主流数据之间的数据传输。以下是关于 DataX数据迁移方法、示例配置及相关常见问题的详细介绍。 #### 一、DataX 数据迁移的核心概念 DataX 提供了一种基于 JSON 配置文件的方式来进行数据迁移任务的设计与执行。每一个迁移任务都需要一个特定的 `json` 文件来描述其操作逻辑[^3]。这些文件通常被称为作业配置文件,它们包含了以下几个核心部分: - **Reader 插件**:用于指定从哪个数据源读取数据。 - **Writer 插件**:用于指定向哪个目标端写入数据。 - **Channel 数量**:控制并发度以提升性能。 - **字段映射关系**:定义源表和目标表之间列的对应关系。 #### 二、MongoDB 到 MySQL数据迁移实例 对于 MongoDB 和 MySQL 这样的跨数据类型场景,可以通过编写合适的 JSON 配置实现高效的数据迁移。下面是一个简单的例子: ```json { "job": { "content": [ { "reader": { "name": "mongodbreader", "parameter": { "column": ["_id", "field1", "field2"], "condition": "{}", "mongoQuery": "{status: 'active'}", "dbUrl": "mongodb://localhost:27017/", "dbName": "test_db", "collectionName": "source_collection" } }, "writer": { "name": "mysqlwriter", "parameter": { "writeMode": "insert", "username": "root", "password": "your_password", "connection": [ { "jdbcUrl": "jdbc:mysql://localhost:3306/target_db?useUnicode=true&characterEncoding=UTF-8", "table": ["target_table"] } ], "preSql": [], "postSql": [] } } } ] } } ``` 上述代码片段展示了如何设置从 MongoDB 中提取数据并将其插入到 MySQL 表中的过程[^1]。注意调整其中涉及的实际连接字符串、用户名/密码以及其他参数以匹配您的具体环境需求。 #### 三、Oracle 至 Oracle 的同构迁移案例 当面对两个相同类型的数据(如 Oracle),可以利用更简洁明了的方式来完成整个流程。这里给出一段典型的 job.json 示例作为参考: ```json { "job": { "setting": {}, "content": [ { "reader": { "name": "oraclereader", "parameter": { "username": "scott", "password": "tiger", "connection": [ { "querySql": ["SELECT * FROM source_table WHERE status='ACTIVE'"], "jdbcUrl": ["jdbc:oracle:thin:@//host:port/service_name"] } ] } }, "writer": { "name": "oraclewriter", "parameter": { "writeMode": "insert", "username": "hr", "password": "hrpwd", "connection": [ { "jdbcUrl": "jdbc:oracle:thin:@//dest_host:port/service_name", "table": ["destination_table"] } ] } } } ] } } ``` 此段脚本说明了怎样把来自某个 Oracle 实例内的记录迁移到另一个不同的 Oracle 里去[^2]。 #### 四、常见错误及其解决办法 尽管 DataX 功能强大,但在实际应用过程中仍可能出现一些典型的问题。以下列举几个常见的状况及解决方案: 1. **无法加载插件**: 如果遇到找不到 reader 或 writer 组件的情况,请确认已正确安装所需模块,并检查路径是否无误[^4]。 2. **权限不足导致失败**: 当报错提示缺乏访问资源的权利时,则需核实所提供的账户是否有足够的授权级别。 3. **网络连通性异常**: 若因网络原因造成通讯中断,应确保两端服务器间能够正常通信且防火墙规则允许相应端口开放。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时光下的旅途

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值