DATAX 数据迁移 oracle-oracle 数据库

项目背景,公司需要把老系统的数据迁移到新系统上,老系统使用了很多年了,历史数据比较多,又不能丢掉。新系统和老系统数据库结构和系统架构不一致,因此需要进去数据迁移。

一、了解DATAX

之前做数据迁移用过Kettle,后面有时间写一期kettle数据迁移的教程。相对来说单纯的数据迁移DATAX效率较高,使用起来方便一点。

dataX是阿里开源的离线数据库同步工具 (支持国产开源),实现了包括 MySQL、Oracle、OceanBase、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、Hologres、DRDS 等各种异构数据源之间高效的数据同步功能。

DataX本身作为数据同步框架,将不同数据源的同步抽象为从源头数据源读取数据的Reader插件,以及向目标端写入数据的Writer插件,理论上DataX框架可以支持任意数据源类型的数据同步工作。同时DataX插件体系作为一套生态系统, 每接入一套新数据源该新加入的数据源即可实现和现有的数据源互通。这一点理解起来很简单,一个输入口,一个输出口,可以独立匹配不同的数据读取和写入。

github地址:https://github.com/alibaba/DataX。这里有源码和文档。

二、安装和使用

官方下载地址:DataX下载地址

官方指南,里面有下载和安装使用DataX/userGuid.md at master · alibaba/DataX · GitHub

运行环境:

Linux
JDK(1.8以上,推荐1.8)
Python(2或3都可以)
Apache Maven 3.x (Compile DataX)

官方文档里面有详细的安装过程,写的很清楚,我就不多说了。

安装完成之后着重说明一下迁移脚本

三、datax迁移脚本

oracle-oracle数据库迁移脚本示例:

1、采用querySql方式,当数据库结构有差异的时候。

    {"job": {"setting": {"speed": {// channel 表示通道数量,byte表示通道速度,如果单通道速度1MB,配置byte为1048576表示一个channel"channel": 1//设置传输速度 byte/s 尽量逼近这个速度但是不高于它,可以不写// "byte": 1048576}},"content": [{//读取部分脚本"reader": {"name": "oraclereader","parameter": {//数据库用户名密码"username": "root","password": "root",//如果采用sql查询的话,就不需要写where条件了"where": "","connection": [{//写一个完整的查询sql,要注意查询出来的字段要和后面的写入字段一一对应。"querySql": ["SELECTROWID AS XSELSH,JDJGDM AS JKJGDM ,JDJGMC AS JKJGMC ,JDRQ AS JKRQ ,JDRYGH AS JKRYGH ,JDRYXM AS JKRYXM ,GRDAID AS GRDAID ,EMPI AS EMPI ,XM AS XM ,XBDM AS XBDM ,CSRQ AS CSRQ ,ZJLXDM AS ZJLXDM ,ZJHM AS ZJHM GLXQDM AS GLXQDM FROMgr_jbxx"],//jdbc连接信息"jdbcUrl": ["jdbc:oracle:thin:@10.127.0.0:2021:orcl"]}]}},//写入部分脚本"writer": {"name": "oraclewriter","parameter": {//数据库用户名密码"username": "root","password": "root",//写入数据库的对应字段,如果不需要指定字段,删除column节点"column": ["XSELSH"     ,"JKJGDM"      ,"JKJGMC"    ,"JKRQ"    ,"JKRYGH"    ,"JKRYXM"    ,"GRDAID"    ,"EMPI"    ,"XM"    ,"XBDM"    ,"CSRQ"    ,"ZJLXDM"    ,"ZJHM"    ,],"connection": [{"jdbcUrl": "jdbc:oracle:thin:@10.127.0.1:2022:orcl",//指定写入table"table": ["ht_rhat"]}]}}}]}
}

2、采用table读取方式,当数据库结构差异不大时。

{"job": {"setting": {"speed": {//设置传输速度 byte/s 尽量逼近这个速度但是不高于它.// channel 表示通道数量,byte表示通道速度,如果单通道速度1MB,配置byte为1048576表示一个channel"byte": 1048576,"channel": 4},},"content": [{"reader": {"name": "oraclereader","parameter": {// 数据库连接用户名"username": "root",// 数据库连接密码"password": "root","column": [//读取指定字段,如果不需要指定字段,删除column节点"id","name"],//切分主键,通过该字段分片处理table,配合channel使用"splitPk": "db_id","connection": [{"table": ["user"],"jdbcUrl": ["jdbc:oracle:thin:@[HOST_NAME]:PORT:[DATABASE_NAME]"]}]}},//写入部分脚本"writer": {"name": "oraclewriter","parameter": {//数据库用户名密码"username": "root","password": "root",//写入数据库的对应字段,如果不需要指定字段,删除column节点"column": ["id"     ,"name"      ,],"connection": [{"jdbcUrl": "jdbc:oracle:thin:@10.127.0.1:2022:orcl",//指定写入table"table": ["user"]}]}}}]}
}

四、oracle数据迁移的注意事项-数据类型

目前OracleReader支持大部分Oracle类型,但也存在部分个别类型没有支持的情况,请注意检查你的类型。暂时只支持一下类型,其他类型需要先对数据库进行处理,转换成能够支持的类型之后才能进行迁移工作。

Oracle 数据类型 DataX 内部类型
NUMBER,INTEGER,INT,SMALLINT Long
NUMERIC,DECIMAL,FLOAT,DOUBLE PRECISION,REAL Double
LONG,CHAR,NCHAR,VARCHAR,VARCHAR2,NVARCHAR2,CLOB,NCLOB,CHARACTER,CHARACTER VARYING,CHAR VARYING,NATIONAL CHARACTER,NATIONAL CHAR,NATIONAL CHARACTER VARYING,NATIONAL CHAR VARYING,NCHAR VARYING String
TIMESTAMP,DATE Date
bit, bool Boolean
BLOB,BFILE,RAW,LONG RAW Bytes

DATAX 数据迁移 oracle-oracle相关推荐

  1. 在大量数据迁移期间oracle学习笔记

    在数据迁移期间oracle学习笔记 0主键(自增) 1用户代码 2区域代码 3承保公司代码 4理赔编码 5投保确认码 6案件状态 7案件进展 8重开案件进展 9转换后案件状态 需求分析: 1.根据上述 ...

  2. datax数据迁移之从oracle往Mysql迁移

    一 实验环境 二 实验步骤 2.1 安装依赖的组件 需要确保已安装以下组件. JDK(1.8以上,推荐1.8) Python(推荐Python2.6.X) Apache Maven 3.X(Compi ...

  3. sql数据迁移到oracle数据库,从Oracle到SQL Server数据库主键的迁移

    由于项目需要要将以前Oracle的数据库转化为SQL Server,今天利用SQL Server的DTD进行数据库的迁移,但导入以后发现只导入了表结构和数据,而表的一些主键约束都没导过来,感觉很郁闷, ...

  4. mysql到oracle数据迁移,mysql数据迁移到oracle

    mysql: utf-8字符集 oracle: Al32UTF8 步骤: 1. 从mysql导出csv格式数据,导出时设置default_character_set=gbk,否则会乱码 2.上传至li ...

  5. 【数据迁移】Oracle冷备方式迁移数据库

    1.  冷备 之前需要查看数据库的数据文件.控制文件.重做日志文件. spfile 和密码文件的位置. (1)  查看 数据文件的 位置 SQL> select file_name from d ...

  6. mysql数据迁移至oracle中的几个问题(1)

    oracle序列代替主键 背景 正文 创建序列 使用序列 背景 最近在从mysql整合同步一批数据到oracle的过程中遇到了不少问题,分篇记录一下. 正文 用navicat设计数据表的时候发现主键无 ...

  7. oracle怎么将一列挪到另一列,详细讲解Oracle数据库的数据迁移方法

    <详细讲解Oracle数据库的数据迁移方法>由会员分享,可在线阅读,更多相关<详细讲解Oracle数据库的数据迁移方法(4页珍藏版)>请在人人文库网上搜索. 1.详细讲解 Or ...

  8. ORACLE使用copy方式存储迁移,详细讲解Oracle数据库的数据迁移方法

    添加所需的表空间和用户到目标数据库中:安装所需的SQL*Net2或者Net8软件,并配置用于连接数据库的别名. 在DOS命令提示符下设置oracle_sid=Oracle7_sid. 以Interna ...

  9. 记一次基于mybatis的Springboot项目数据库从Mysql迁移至Oracle的全过程(超详细)

    前言 自己做了一个后端使用springboot,前端使用vue的前后端分离的知识图谱系统,图数据库用Neo4j,关系数据库用的mysql,在项目上线前一周,甲方爸爸要求关系数据库要使用Oracle11 ...

最新文章

  1. 数据爆发时代,英特尔携手腾讯构筑全面的数据长城
  2. 华为 | 人生苦短,码短情长,有场大Party等你来Pick!
  3. IIS+PHP下调用WebService初试
  4. android 两种实现计时器时分秒的实现,把时间放在你的手中~
  5. 像小猪佩奇那样生活,需要多少钱?
  6. linux系统安装arcsde,Linux操作系统安装ArcSDE10
  7. NoSQL和传统数据库的区别
  8. Linux Apache服务详解——Apache服务访问控制
  9. C语言运算符与输入输出
  10. 什么是exploit
  11. 直播APP软件开发,直播系统开发的技术架构揭秘
  12. 数据采集 - 获取【码市】最新发布需求,并实时通知用户 案例二
  13. activemq如何保证消息按顺序消费
  14. 联想国产自主计算机,实现零的突破,第一款纯国产电脑诞生,网友:此刻联想怎么想?...
  15. 第二个c程序,日语208音练习
  16. 大数据分析行业发展趋势
  17. 1626:Hankson 的趣味题
  18. 美国Top50金融科技公司简介
  19. 一、springboot项目集成大众点评cat
  20. Spring Boot Admin2 @EnableAdminServer的加载

热门文章

  1. mysql root 没有库_mysql root用户看不到mysql库下的所有表
  2. 软raid的详细配置讲解 raid 0
  3. 计算机网络三:域名、IP地址和TCP/IP协议
  4. PS图层+移动工具(1)图层概念-拖动操作-移动工具基础
  5. 【C++】 类的内存对齐、虚函数表
  6. 最近找到了一个免费的python教程,两周学会了python开发【内附学习视频】
  7. 轴承的摩擦与润滑 中英文翻译
  8. [IJCAI-17 口碑商家客流量预测]
  9. 函数组:SCMS_CONV
  10. 2021年第一份可视化模板教程,手把手教你做出黑科技感的大屏