DataX入门教学

发布时间 2023-06-25 10:07:47作者: 丶半年

B站学习网址:

https://www.bilibili.com/video/BV1H44y1x76X/?p=5&spm_id_from=pageDriver&vd_source=5fcc0d714ffdcc521fdaa5ef49391aef

Windows 下安装DataX以及Data-Web

1、环境

1.1:本地安装好 jdk 、 maven 、 python 的基础环境

	java版本:java 20.0.1 2023-04-18
	maven:Apache Maven 3.9.2
	python:Python 3.11.4
	dataX:DataX-datax_v202303.zip
	dataX-Web:2.1.2 
	下载地址:
			DataX:				https://datax-opensource.oss-cn-hangzhou.aliyuncs.com/202303/datax.tar.gz
			DataX-Web:			https://codeload.github.com/WeiYe-Jing/datax-web/zip/refs/tags/v-2.1.2  			
			DatatX_python3:		https://codeload.github.com/HxYyWw/DatatX_python3/zip/refs/heads/master
			python:				https://www.python.org/ftp/python/3.11.4/python-3.11.4-embed-amd64.zip
			Java:				https://download.oracle.com/java/20/latest/jdk-20_windows-x64_bin.msi
			maven:				https://dlcdn.apache.org/maven/maven-3/3.9.2/binaries/apache-maven-3.9.2-bin.zip
	
	
	安装参考文档:https://blog.csdn.net/m0_46517444/article/details/118723643

1.2:在DataX的官网上下载压缩包,然后解压到自定义的文件夹里面

	官网地址:https://github.com/alibaba/DataX

1.3:win +R 输入cmd命令。进入命令行模式[使用管理员模式]

	本地安装路径:D:\Work\DataX\datax
	防止乱码执行命令: CHCP 65001
	使用命令进入bin目录:cd D:\Work\DataX\datax\bin
	执行脚本:python datax.py …/job/json/job.json   也可以
	执行脚本:python datax.py D:\Work\DataX\datax\job\job.json

1.4:查看模板

    命令行:python datax.py -r streamreader -w streamwriter

1.5:编写脚本,

	将脚本存放到datax\datax\job目录底下,
	然后执行后python datax.py datax\job\你的脚本.json运行
	脚本格式信息可以去 https://github.com/alibaba/DataX/ 查看

备注:

   本地使用的python环境是python3.11.4,
请到 https://github.com/HxYyWw/DatatX_python3/tree/master
下载对应的三个.py文件代替datax文件夹中bin目录下的三个.py文件即可。

2、入门使用DataX

2.1 查看模板命令

	python datax.py -r mysqlreader -w mysqlwriter

2.2 使用案例


 {
 "job": {
     "setting": {
 		"speed": {
             "channel": 并发数
             }
         },
         "content": [
             {
             "reader": {
               "name": "固定的名字",
                     "parameter": {
                         "username": "账号",
                         "password": "密码",
                         "column": [
                             "字段1",
                             "字段2",
                             "字段3"
                             ps:[*]表示所有列,但是不建议使用
                         ],
                         "splitPk": "分片字段,丢给task,所以必须是整形。一般用主键即可(非必须)",
                         "connection": [
                             {
                                 "table": [ "表"],
                                 "jdbcUrl": [  "数据库连接地址"],
                                 "querySql":["这里可以写查询数据的sql语句,但是如果这里写了,则不允许再配置table,否则会报错(非必须,table和querySql只能存在一个)"]
                             }
                         ],
                         "where":"过滤条件"
                     }
                 },
                 "writer": {
                     "name": "固定的名字",
                     "parameter": {
                         "writeMode": "写入策略",
                         "username": "账户",
                         "password": "密码",
                         "column": [
                             "字段1",
                             "字段2",
                             "字段3"
                         ],
                         "session": [
                             "DataX在获取Mysql连接时,执行session指定的SQL语句,修改当前connection session属性(非必须)"
                         ],
                         "preSql": [
                             "写入数据到目的表前,会先执行这里的标准语句(非必须)"
 						],
                         "connection": [
                             {
                                 "jdbcUrl": "数据库连接地址",
                                 "table": [
                                     "表"
                                 ]
                             }
                         ]
                     }
                 }
             }
         ]
     }
 }

2.3 其他配置连接

2.3.1:MySQL 数据库连接配置信息示例

"connection": [
		{
			"jdbcUrl": [ // 数据库连接字符串
				"jdbc:mysql://localhost:3306/your_mysql_database"
			],
			"table": [ // 需要读取或写入的数据表名称
				"your_mysql_table"
			],
			"username": "your_mysql_username", // 数据库用户名
			"password": "your_mysql_password", // 数据库密码
			"driverClassName": "com.mysql.jdbc.Driver", // 数据库驱动类名
			"fetchSize": 1024 // 数据抓取的数量
		}
	]

2.3.2:Oracle 数据库连接配置信息示例:

"connection": [
			{
				"jdbcUrl": [ // 数据库连接字符串
					"jdbc:oracle:thin:@your_oracle_host:port:your_oracle_sid"
				],
				"table": [ // 需要读取或写入的数据表名称
					"your_oracle_table"
				],
				"username": "your_oracle_username", // 数据库用户名
				"password": "your_oracle_password", // 数据库密码
				"driverClassName": "oracle.jdbc.driver.OracleDriver", // 数据库驱动类名
				"fetchSize": 1024 // 数据抓取的数量
			}
		]

2.3.3:SQL Server 数据库连接配置信息示例

		"connection": [
			{
				"jdbcUrl": "jdbc:sqlserver://your_sqlserver_host:port;database=your_sqlserver_database", // 数据库连接字符串
				"table": "your_sqlserver_table", // 需要读取或写入的数据表名称
				"username": "your_sqlserver_username", // 数据库用户名
				"password": "your_sqlserver_password", // 数据库密码
				"driverClassName": "com.microsoft.sqlserver.jdbc.SQLServerDriver", // 数据库驱动类名
				"fetchSize": 1024 // 数据抓取的数量
			}
		]

2.3.4:PostgreSQL 数据库连接配置信息示例:

	"connection": [
			{
				"jdbcUrl": [ // 数据库连接字符串
					"jdbc:postgresql://your_postgresql_host:port/your_postgresql_database"
				],
				"table": [ // 需要读取或写入的数据表名称
					"your_postgresql_table"
				],
				"username": "your_postgresql_username", // 数据库用户名
				"password": "your_postgresql_password", // 数据库密码
				"driverClassName": "org.postgresql.Driver", // 数据库驱动类名
				"fetchSize": 1024 // 数据抓取的数量
			}
		]

3、DataX Web 安装[未安装,需要linux系统,或者window idea]

3.1:安装
	下载地址:https://github.com/WeiYe-Jing/datax-web
	本地安装路径:D:\Work\DataX\datax-web
	首先运行需要一个本地的MySQL数据库
	解压执行数据库脚本:D:\Work\DataX\datax-web\bin\db
	解压后的目录里bin目录的db目录下有个datax_web.sql
	打开之后可以看到,它只有建表语句,没有建库语句,而数据库名是datax_web

3.2:修改application.yml
	文件路径:D:\Work\DataX\datax-web\datax-admin\src\main\resources\application.yml