记一次从oracle到hive的历史数据迁移(一)

介绍一下具体场景

需要从现有在用的oracle中将历史数据迁移出来并导入到hive中,存在几个问题:1、现有oracle数据库在使用无法整个库导出,数据库服务器没有权限;2、由于各个数据提供方的各次升级,oracle数据库采取添加字段而不删除字段的方式更新,而hive中建立的表数据结构要按新的来,也就是说oracle导出的数据到hive表中需要做字段对应。

决定先将oracle导入到另一个oracle中,将oracle中表字段和hive中的表字段进行比对得到各个的对应关系,之后写对应的sqoop语句对应利用ETL流程安装账期一天一天导入。

从一个oracle到另一个oracle导入的方案,利用大神写出的sqluldr2 工具用来导出数据,导入利用

sqlldr 命令导入到另一个库表中。

导出的具体命令

sqluldr2.bin user=root/[email protected] query="select /*+ parallel(8) */ * from table   " head=no File=/data/oracle/tmp/file 导出到本地目录

导入的具体命令

sqlldr root/[email protected]@ip:1521/tnsname control=/data/oracle/shell/xxx.ctl

data=/data/oracle/tmp/file

log=/data/oracle/log/file.log errors=0 rows=100000 bindsize=1024000000 direct=y;

xxx.ctl 是用来指定导入表的字段和分割符如下写法

load data

truncate into table  tablename

Fields terminated by ‘,‘ #文件的列分隔符

TRAILING NULLCOLS

(

IP char(255),

APPKEY char(255),

PLATFORM char(255),

PORTAL char(255),

COMPANYID char(255) )

时间: 2024-11-05 17:25:52

记一次从oracle到hive的历史数据迁移(一)的相关文章

Loading Data From Oracle To Hive By ODI 12c

本文描述如何通过ODI将Oracle表数据同步到Hive.1.准备工作在hadoop集群的各个节点分别安装Oracle Big Data Connectors,具体的组件如下图所示:这里只需安装Oracle Loader For Hadoop(oraloader)以及Oracle SQL Connector for Hadoop Distributed File System (oraosch)两个软件.安装比较简单,直接解压即可使用(这里的ODI.oraosch以及oraloader组件都是以

实验:Oracle直接拷贝物理存储文件迁移

实验目的:Oracle直接拷贝物理文件迁移,生产库有类似施工需求,故在实验环境简单验证一下. 实验环境: A主机:192.168.1.200 Solaris10 + Oracle 11.2.0.1 B主机:192.168.1.186 Solaris10 1.备份ORACLE安装包($ORACLE_BASE目录) tar cvf oracle.tar oracle 2.关库,备份参数文件,控制文件,数据文件,临时文件,日志文件 查看各个文件的存放路径: SQL> show parameter pf

Oracle用分区表分区交换做历史数据迁移

一. 说明: OLTP库中有些表数据量大,且每月有持续的大量数据添加.因为历史数据在此库中不再做訪问,而是在另1个OLAP库中做分析.所以会对历史数据迁移至OLAP库中.对这样的历史数据迁移的操作.较好的办法是该表採用分区表.按时间分区后,能够对分区进行迁移.通过分区交换和表空间传输会非常easy完毕.并且性能上影响非常小. 关于分区表很多其它内容:    http://blog.csdn.net/tanqingru/article/category/1397435 关于表空间传很多其它内容:

oracle作为hive元数据库,建表报错

hive> > > create table test(a string, b int);FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:javax.jdo.JDODataStoreException: An exception was thrown while adding/validating class(es) : OR

SQOOP Load Data from Oracle to Hive Table

sqoop import -D oraoop.disabled=true --connect "jdbc:oracle:thin:@(description=(address=(protocol=tcp)(host=HOSTNAME)(port=PORT))(connect_data=(service_name=SERVICE_NAME)))" --username USERNAME --table TABLE_NAME --null-string '\\N' --null-non-s

sqoop oracle到hive,动态分区一次操作记录

sqoop,将oracle数据传递到hive,可以直接将表数据覆盖传递,也可以按select传递,这里我用的是select查询的 脚本如下: 1.创建分区表,按c1分区 CREATE TABLE `xx.cc`( `c1` string) PARTITIONED BY(`c2` string); 2.通过sqoop将数据导入临时表中 sqoop import -D oraoop.jdbc.url.verbatim=true --hive-import --hive-overwrite --con

记使用talend从oracle抽取数据时,数字变为0的问题

数据源为oracle,字段类型为number. 发现通过mainline连接到一个logrow控件,输入的该字段的值为0 经过多次测试还是没发现有什么规律. 通过查看代码发现有这一句内容. if (row2.ID != null) { // strBuffer_tLogRow_1.append(row2.ID.setScale(-127,java.math.RoundingMode.HALF_UP).toPlainString()); } // 不知这个是个bug还是一个未知的规则. 待解决.

Oracle Undo 查询表中历史数据

Undo 表空间用于存放Undo 数据.当执行DML操作时,Oracle会将这些操作的旧数据写入Undo 段.用于对数据库 一致读,事务回滚 之类的操作. 换而言之,在特殊情况下,我们可以用它来找回被错误操作的数据.例如: SELECT t.fid   FROM ct_bas_province AS OF TIMESTAMP to_date('2014-11-21 22:01', 'yyyy-mm-dd HH24:mi') t  WHERE t.fnumber = '海南省'; 即在要查询的表名

Oracle RAC环境实时数据迁移

系统要求及安装前的说明 Oracle GoldenGate可以在Oracle不同版本间移动数据,也可以在Oracle和其它类型数据库之间移动数据.Oracle GoldenGate支持数据的过滤.映射和转换.Oracle还能在相似的Oracle数据库之间复制DDL操作.注意下面一句:当DDL支持被激活的时候,Oracle GoldenGate不支持数据的过滤.映射和转换. 支持的Oracle数据库版本,从9.2开始支持DML和DDL.支持几乎所有的主流操作系统,具体的可以从MOS(My Orac