DataX和Oracle使用案例

2023-05-16

DataX和Oracle使用案例


文章目录

  • DataX和Oracle使用案例
    • 0. 写在前面
    • 1. 从 Oracle 中读取数据存到 MySQL
      • 1.1 MySQL 中创建表
      • 1.2 编写 Datax 配置文件
      • 1.3 执行命令
    • 2. 读取 Oracle 的数据存入 HDFS 中
      • 2.1 编写配置文件
      • 2.2 执行命令
      • 2.3 查看HDFS 结果
    • 3. 总结


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 -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的数据:

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DC83cDRA-1675910623327)(./1.jpg)]

    • 导入MySQL前表student的数据:

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dFA53KI8-1675910623328)(./2.jpg)]

    • 导入MySQL后表student的数据:

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gbBWuYv6-1675910623329)(./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文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-55sP74PR-1675910623330)(./4.jpg)]在这里插入图片描述

3. 总结

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

全文结束!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DataX和Oracle使用案例 的相关文章

  • 创建每 5 分钟刷新一次的物化视图

    我创建了一个每 5 分钟刷新一次的物化视图 但是当我在物化视图上插入并执行选择时 我会得到相同的旧数据吗 需要手动刷新吗 CREATE MATERIALIZED VIEW MVW TEST REFRESH FORCE ON DEMAND S
  • 相当于 Oracle 的 SQL*Plus 中 MySQL 的 \G

    在 Oracle 的 SQL Plus 中 SELECT 的结果以表格方式显示 有没有办法以键值方式显示一行 例如MySQL的 G option http slaptijack com software enabling vertical
  • 神秘的 getClobVal()

    我有一个表 AKADMIN 其中包含 XMLTYPE 列 其名称为 XML 我想在该列中使用 getClobVal select t xml getClobVal t xml getClobVal t xml getClobVal as c
  • 在 Oracle 临时表上放置索引安全吗?

    我读过 不应分析临时表 因为它会破坏其他表的统计信息 指数怎么样 如果我在程序运行期间在表上放置索引 使用该表的其他程序会受到该索引的影响吗 索引是否会影响我的进程以及使用该表的所有其他进程 或者它会单独影响我的过程吗 所有的回复都不是权威
  • oracle 数据透视表中的列

    示例选择 select from select 1 cnt 2 sm 55 name 12 month 2011 year 12 2011 mnth txt from dual union all select 1 cnt 2 sm 54
  • Rails 建模:将 HABTM 转换为 has_many :through

    我正在现有的 Rails 站点上进行维护工作 并且遇到了一些由多对多关联引起的问题 看起来该网站最初是使用has and belongs to many对于一些业务逻辑变得更加复杂的关系 所以我需要使用has many through而是支
  • SQL*Loader - 如何忽略具有特定字符的某些行

    如果我有一个以下格式的 CSV 文件 fd sdf dsfds dsfd fd asdf dsfds dsfd fd sdf rdsfds dsfd fdd sdf dsfds fdsfd fd sdf dsfds dsfd fd sdf
  • 在 Oracle 中创建数据库链接时出错

    我有两个数据库 需要编写跨数据库查询 所以我试图创建一个数据库链接 CREATE PUBLIC DATABASE LINK DBLink CONNECT TO SchemaName IDENTIFIED BY 123 using DBNam
  • Oracle Many OR 与 IN () 的 SQL 性能调优 [重复]

    这个问题在这里已经有答案了 我手头没有 解释计划 您能帮忙判断以下哪一个更有效吗 选项1 select from VIEW ABC where STRING COL AA OR STRING COL BB OR STRING COL BB
  • 在 C# 中多次使用单个参数的更好方法

    我刚开始使用准备好的语句从数据库查询数据 并且在实现 C 参数 特别是 OracleParameters 时遇到问题 假设我有以下 SQL string sql select from table1 t1 table2 t2 where t
  • 数据库的创建日期

    这是一个问题 起源于this https stackoverflow com questions 2522626 check how old an oracle database is 2523227 2523227杰米提出的问题 我想我会
  • 如何在sql中提取周数

    我有一个 varchar2 类型的转换列 其中包含以下主菜 01 02 2012 01 03 2012 etc 我使用 to date 函数将其转换为另一列中的日期格式 这是我得到的格式 01 JAN 2012 03 APR 2012 当我
  • Oracle内置函数元数据

    有没有办法获取 Oracle 内置聚合和其他功能的元数据 例如AVG STDDEV SQRT ETC 我需要知道对象 id 和参数元 In the SYS ALL OBJECTS查看我找不到任何有用的东西 我也尝试过搜索SYS ALL AR
  • 如何修复“Oracle.EntityFrameworkCore 类型中的方法‘get_Info’没有实现”。

    我正在尝试通过 EW 连接到 Oracle DB 论方法OnConfiguring是错误 System TypeLoadException 程序集 Oracle EntityFrameworkCore Version 2 0 19 1 Cu
  • PLS-00103:遇到符号“;”当预期出现以下情况之一时:

    我正在尝试插入用户安全问题的答案 以用于密码重置功能 Ellucian 横幅 v8 提供了一个用于运行此 API 的 API 我对他们的 API 非常陌生 从下面的错误消息来看 我还远远没有正确运行它 任何帮助表示赞赏 我尝试在 Oracl
  • 验证 sql/oracle 中的电子邮件/邮政编码字段

    对于以下方面的一些建议将不胜感激 是否可以通过 oracle 中的 sql 中的某种检查约束来验证电子邮件和邮政编码字段 或者我怀疑 pl sql 带有正则表达式的这种事情 Thanks 这是电子邮件地址的正则表达式语法 包括引号 a zA
  • Oracle如何将UTC时间转换为本地时间(缺少偏移信息)

    我有一个包含日期列的表 我认为该列中的日期是以 UTC 格式保存的 我希望检索日期时以当地时间打印 这意味着当我从德国调用日期时 结果应该是这样的 2015 04 29 11 24 06 0200UTC EUROPE BERLIN 我尝试了
  • 自动提取数据 - Oracle SQL Developer

    我通过 SQL Developer 连接到 Oracle 数据库 我想编写一个返回每月数据集的查询 然后将该数据提取到分隔文本文件中 我知道如何做到这一点就好了 我想知道是否有一种方法可以编写一个脚本来运行查询并在一年内逐月提取数据 这样我
  • Oracle:动态设置表中所有 NOT NULL 列以允许 NULL

    我有一个包含 75 多个列的表 几乎所有列都有 NOT NULL 约束 如果执行巨大的更改表修改语句 其中的每一列 我会收到一条错误消息 内容大致为 您不能将此字段设置为 NULL 因为它已经是 NULL 我必须对几个表执行此操作 因此更希
  • SQL 错误:ORA-14006:无效的分区名称

    我正在尝试使用以下 SQL 语句对 Oracle 12C R1 中的现有表进行分区 ALTER TABLE TABLE NAME MODIFY PARTITION BY RANGE DATE COLUMN NAME INTERVAL NUM

随机推荐

  • 基于R的Bilibili视频数据建模及分析——变量相关性分析篇

    基于R的Bilibili视频数据建模及分析 变量相关性分析篇 文章目录 基于R的Bilibili视频数据建模及分析 变量相关性分析篇 0 写在前面 1 数据分析 1 1 变量相关性分析 1 2 单元数据直观展示 1 3 多元数据直观展示 2
  • 基于R的Bilibili视频数据建模及分析——聚类分析篇

    基于R的Bilibili视频数据建模及分析 聚类分析篇 文章目录 基于R的Bilibili视频数据建模及分析 聚类分析篇 0 写在前面 1 数据分析 1 1 聚类分析 1 2 聚类统计 1 3 系统聚类 1 4 Kmeans与主成分分析 2
  • 基于R的Bilibili视频数据建模及分析——建模-因子分析篇

    基于R的Bilibili视频数据建模及分析 建模 因子分析篇 文章目录 基于R的Bilibili视频数据建模及分析 建模 因子分析篇 0 写在前面 1 数据分析 1 1 建模 因子分析 1 2 对数线性模型 1 3 主成分分析 1 4 因子
  • 大数据技术之Maxwell基础知识

    大数据技术之Maxwell基础知识 文章目录 大数据技术之Maxwell基础知识0 写在前面1 Maxwell 概述1 1 Maxwell 定义1 2 Maxwell 工作原理1 2 1 MySQL 主从复制过程1 2 2 Maxwell
  • 大数据技术之Maxwell入门案例学习

    大数据技术之Maxwell入门案例学习 文章目录 大数据技术之Maxwell入门案例学习1 写在前面2 Maxwell 使用2 1 Maxwell 安装部署2 2 Maxwell 入门案例2 2 1 监控 Mysql 数据并在控制台打印2
  • Canal实时监控案例

    Canal实时监控案例 文章目录 Canal实时监控案例0 写在前面1 TCP 模式测试1 1 IDEA创建项目canal module 1 2 通用监视类 CanalClient1 2 1 Canal 封装的数据结构1 2 2 在 can
  • unity笔记--Transform.SetSibling

    transform SetAsLastSibling 将变换移动到本地变换列表的末尾 即设置为同级索引中的最后一项 transform SetAsFirstSibling 将变换移动到本地变换列表的开头 即设置为同级索引中的第一项 tran
  • 大数据技术之Canal入门篇

    大数据技术之Canal入门篇 文章目录 大数据技术之Canal入门篇写在前面第 1 章 Canal 入门1 1 什么是 Canal1 2 MySQL 的Binlog1 2 1 什么是 Binlog1 2 2 Binlog 的分类 1 3 C
  • Doris集成Spark读写的简单示例

    Doris集成Spark读写的简单示例 文章目录 Doris集成Spark读写的简单示例0 写在前面1 Spark Doris Connector介绍2 基本示例2 1 提前准备表和数据2 2 新建项目2 3 使用SQL方式进行读写2 3
  • Linux用户与用户组介绍

    Linux用户与用户组介绍 文章目录 Linux用户与用户组介绍0 写在前面1 group1 1 什么是组 xff1f 1 2 groupadd1 2 groupmod1 3 groupdel1 4 gpasswd1 5 相关文件说明 2
  • Linux安装Oracle数据库

    Linux安装Oracle数据库 文章目录 Linux安装Oracle数据库0 写在前面1 Oracle 数据库1 1 简介1 2 Oracle 与 MySQL 的SQL 区别 2 前置准备2 1 安装依赖包2 2 配置用户组2 3 上传安
  • DataX与DB2导入导出案例

    DataX与DB2导入导出案例 文章目录 DataX与DB2导入导出案例0 写在前面1 DB2介绍2 DB2数据库对象关系3 安装前的准备3 1 安装依赖3 2 修改配置文件 sysctl conf3 3 修改配置文件 limits con
  • Doris集成其他系统——ODBC外部表

    Doris集成其他系统 ODBC外部表 文章目录 Doris集成其他系统 ODBC外部表0 写在前面1 正文1 1 ODBC外部表介绍1 2 使用方式 2 使用 ODBC 的 MySQL 外表2 1 前置芝士2 2 安装 unixODBC2
  • Linux安装ElasticSearch

    Linux安装ElasticSearch 文章目录 Linux安装ElasticSearch0 写在前面1 环境准备2 ES安装2 1ES解压2 2 新增普通用户2 3 给新创建的普通用户授权2 4 给新创建的普通用户设置sudo权限2 5
  • Hadoop入门学习——简介篇

    Hadoop入门学习 简介篇 文章目录 Hadoop入门学习 简介篇1 大数据概论1 1 分布式 并行 1 2 大数据特点 xff08 4V xff09 1 2 1 Volume xff08 大量 xff09 1 2 2 Velocity
  • Hadoop之分布式技术

    Hadoop之分布式技术 文章目录 Hadoop之分布式技术1 我们为什么需要分布式1 1 计算问题1 2 存储问题 2 分布式系统概述3 分布式实现方案4 分布式系统5 集群6 负载均衡7 弹性8 故障转移 1 我们为什么需要分布式 1
  • 认识DataX及简单入门

    认识DataX及简单入门 文章目录 认识DataX及简单入门1 DataX的概述1 1 什么是DataX1 2 DataX 的设计1 3 支持的数据源1 3 支持的数据源1 4 框架设计1 5 运行原理1 6 DataX和Sqoop的对比
  • Nginx 反向代理及https配置

    参考代码 在server中添加 location api proxy set header Host host proxy set header X Real IP remote addr proxy set header X Forwar
  • DataX使用之基础案例

    DataX使用之基础案例 文章目录 DataX使用之基础案例0 写在前面1 从stream 流读取数据并打印到控制台2 读取 MySQL 中的数据存放到 HDFS2 1 查看官方模板2 1 1 mysqlreader 参数解析 xff1a
  • DataX和Oracle使用案例

    DataX和Oracle使用案例 文章目录 DataX和Oracle使用案例0 写在前面1 从 Oracle 中读取数据存到 MySQL1 1 MySQL 中创建表1 2 编写 Datax 配置文件1 3 执行命令 2 读取 Oracle