DataX和Oracle使用案例

496 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 15 天,点击查看活动详情

DataX和Oracle使用案例



0. 写在前面

  • 版本信息说明:

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

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

Oracle版本:Oracle19c

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

  • 数据库Oracle 与 MySQL 的SQL 区别
类型OracleMySQL
整型number(N)/integerint/integer
浮点型floatfloat/double
字符串类型varchar2(N)varchar(N)
NULL''null 和''不一样
分页rownumlimit
""限制很多,一般不让用与单引号一样
价格闭源,收费开源,免费
主键自动增长×
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 -p123456 
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数据库教程见下方链接:

juejin.cn/post/719706…

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": "123456",
                        "username""whybigdata"
                    }
                },
                "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和其他数据库之间的数据导入导出本质上是一样的,都是通过模板配置文件来实现操作,大同小异。

全文结束!