DataX和Oracle使用案例

举报
WHYBIGDATA 发表于 2023/02/23 10:01:29 2023/02/23
【摘要】 DataX和Oracle使用案例

DataX和Oracle使用案例



0. 写在前面

  • 版本信息说明:

Oracle、MySQL数据库和DataX安装在一台机器node01上

DataX版本:DataX3.0(开源版)

Oracle版本:Oracle19c

说到数据库,我们都能想到类型分为关系型和非关系型数据库;Oracle和MySQL都是属于关系型数据库管理系统,在正文开始之前,有必要了解一下Oracle和MySQL在SQL方面的一些区别,以便参考

  • 数据库Oracle 与 MySQL 的SQL 区别

    类型 Oracle MySQL
    整型 number(N)/integer int/integer
    浮点型 float float/double
    字符串类型 varchar2(N) varchar(N)
    NULL ‘’ null 和’'不一样
    分页 rownum limit
    "" 限制很多,一般不让用 与单引号一样
    价格 闭源,收费 开源,免费
    主键自动增长 ×
    if not exists ×
    auto_increment ×
    create database ×
    select * from table as t ×

1. 从 Oracle 中读取数据存到 MySQL

1.1 MySQL 中创建表

进入MySQL交互界面,在oracle这个库下创建表student,字段为id和name,具体sql语句如下所示:

[oracle@node01 ~]$ mysql -uroot -p000000 
mysql> create database oracle;    
mysql> use oracle;    
mysql> create table student(id int,name varchar(20)); 

1.2 编写 Datax 配置文件

编写配置文件 oracle2mysql.json

[oracle@node01 ~]$ vim /opt/module/datax/job/oracle2mysql.json
{
	"job": {
		"content": [
		{
			"reader": {
			"name": "oraclereader", 
			"parameter": {
				"column": ["*"], 
				"connection": [
					{
						"jdbcUrl": ["jdbc:oracle:thin:@node01:1521:orcl"],
						"table": ["student"]
					}
				],
				"password": "123456", 
				"username": "whybigdata"
			}
		},
		"writer": {
			"name": "mysqlwriter", 
			"parameter": {
				"column": ["*"], 
				"connection": [
					{
						"jdbcUrl": "jdbc:mysql://node01:3306/oracle", 
						"table": ["student"]
					}
				],
				"password": "123456", 
				"username": "root", 
				"writeMode": "insert"
			}
		}
	}
}

注意: jdbc:oracle:thin:@node01:1521:orcl 中的 orcl 指的是数据库名(安装Oracle数据库时设置的SID),同时要注意Oracle的数据库连接方式url的书写。

Linux安装Oracle数据库教程见下方链接:

https://juejin.cn/post/7197066611453804581

1.3 执行命令

执行命令如下 :

[oracle@node01 ~]$ /opt/module/datax/bin/datax.py /opt/module/datax/job/oracle2mysql.json

查看datax执行后MySQL中student表的数据结果:可以看到数据导入成功了

mysql> select * from student;
+	+	+
| id	| name	|
+	+	+
|	1 | zhangsan |
+	+	+

数据从DataX导入MySQL数据库前后的对比

  • Oracle导入MySQL前后:

    • Oracle表student的数据:

      1.jpg

    • 导入MySQL前表student的数据:

      2.jpg

    • 导入MySQL后表student的数据:

      3.jpg

2. 读取 Oracle 的数据存入 HDFS 中

2.1 编写配置文件

编写配置文件 oracle2hdfs.json

[oracle@node01 datax]$ vim job/oracle2hdfs.json  
{
    "job": {
        "content": [
            {
                "reader": {
                    "name": "oraclereader",
                    "parameter": {
                        "column": [
                            "*"
                        ],
                        "connection": [
                            {
                                "jdbcUrl": [
                                    "jdbc:oracle:thin:@node01:1521:orcl"
                                ],
                                "table": [
                                    "student"
                                ]
                            }
                        ],
                        "password": "000000",
                        "username": "atguigu"
                    }
                },
                "writer": {
                    "name": "hdfswriter",
                    "parameter": {
                        "column": [
                            {
                                "name": "id",
                                "type": "int"
                            },
                            {
                                "name": "name",
                                "type": "string"
                            }
                        ],
                        "defaultFS": "hdfs://node01:8020",
                        "fieldDelimiter": "\t",
                        "fileName": "oracle.txt",
                        "fileType": "text",
                        "path": "/",
                        "writeMode": "append"
                    }
                }
            }
        ],
        "setting": {
            "speed": {
                "channel": "1"
            }
        }
    }
}

2.2 执行命令

执行命令如下:

[oracle@node01 datax]$ bin/datax.py job/oracle2hdfs.json  

2.3 查看HDFS 结果

HDFS成功导入Oracle数据库表student的数据进入 oracle.txt_xxxxxxxxxxxxxxx文件

4.jpg

3. 总结

全文其实最主要的是Oracle数据库是否成功安装,这是最关键的一点,完成了这一步骤,DataX和其他数据库之间的数据导入导出本质上是一样的,都是通过模板配置文件来实现操作,大同小异。

全文结束!

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。