apache sgoop 导入数据到 oracle、导出数据到 oracle 实现

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。

业务场景:是在oracle 数据库和  hive 数据库中 ,有多个相同结构的表,要求数据从2个库定时双向同步。

(导出时可以只导出部分字段,则此时 hive 库和 oracle 库中表结构可以并非完全一致)

1. 写一个文本文档,把要导入的表名和库名先编辑好,格式如 oracle_table_list_append.txt :

wate.BUSI_xxx
wate.xxx_xxx_INFO
wate.xxx_USER_xxx
... # wate 是 oracle 数据库名, BUSI_xxx 是表名。
# 可写多行,脚本执行时读取每个一行,循环导入每个表的数据。

编写sgoop  import 脚本并执行即可把数据从 oracle 数据库导入到 hive 数据库中。

current=`date -d "yesterday" +%Y-%m-%d`     #获取当前时间
#current=`date -d "yesterday 20190110" +%Y-%m-%d`     #获取指定日期的前一天begin=${current}" 00:00:00"sed -i '/^$/d' /opt/xxx/sqoop/conf/oracle_table_list_append.txt
cat /opt/xxx/sqoop/conf/oracle_table_list_append.txt|while read line
doOLD_IFS="$IFS"IFS="."arr=($line)db_name=${arr[0]}table_name=${arr[1]}echo "####begin to sqoop from oracle "${db_name}.${table_name} "......"sqoop import \--connect jdbc:oracle:thin:@192.168.xx.xx:1521/${db_name} \--username 数据库名 \--password 数据库密码 \--table ${table_name} \--where "creationtime >=to_date('${begin}','yyyy-mm-dd hh24:mi:ss') or xxxtime>=to_date('${begin}','yyyy-mm-dd hh24:mi:ss') or dxxtime>=to_date('${begin}','yyyy-mm-dd hh24:mi:ss') " \--hive-drop-import-delims \--null-string '\\N' \--null-non-string '\\N' \--fields-terminated-by '\007' \--lines-terminated-by '\n' \--hive-import \--hive-table hive数据库名.${table_name} \-m 10rc=$?if [ $rc -ne 0 ]thenecho "#### sqoop from oracle "${db_name}.${table_name} " failed......"# echo "#### sqoop from oracle "${db_name}.${table_name} " failed......"|mail -s "failed crontab_${current}" xxx@163.comelseecho "####sqoop from oracle "${db_name}.${table_name} " successed......"fidone
current=`date "+%Y-%m-%d %H:%M:%S"`     #获取当前时间
end_timeStamp=`date -d "$current" +%s`
du_time=$[end_timeStamp-begin_timeStamp]
echo "sqoop total time used:" $du_time "s" 
--where 此参数是条件过滤,全表导入,可不加此参数。

2.  编写sgoop  export 脚本并执行,则可把数据从 hive 库 导出到 oracle 数据库。 

current_datetime=`date "+%Y-%m-%d %H:%M:%S"`
echo "Start Timing Task:"$current_datetime
current=`date "+%Y-%m-%d %H:%M:%S"`     #获取当前时间
begin_timeStamp=`date -d "$current" +%s`table_name="cxx_xxx_day"
day=`date -d -1days "+%Y%m%d"` #昨天(此表以天分区,每次只导一天的数据)echo "####开始导出"${day}"的数据 into oracle oracle数据库名."${table_name} "......"sqoop export \--connect "jdbc:oracle:thin:@192.168.xxx.xxx:1521/oracle数据库连接名" \--username oracle数据库名 \--password oracle数据库密码 \--table ${table_name} \--export-dir "/user/hive/xxx/hivexxx.db/xxx_xxx_day/day=${day}" \--columns xxx_no,datatime,xxx_value,xxx_status,xxx_voage,staxx_str,stxxxs_hex,fy_id \--input-fields-terminated-by '\007' \--input-lines-terminated-by '\n' \--input-null-string '\\N' \--input-null-non-string '\\N' \--m 4rc=$?if [ $rc -ne 0 ]thenecho "Timing Task Error:"echo "####sqoop from hive into oracle "${table_name} " failed......"elseecho "####sqoop from hive into oracle "${table_name} " successed......"fi
current=`date "+%Y-%m-%d %H:%M:%S"`     #获取当前时间
end_timeStamp=`date -d "$current" +%s`
du_time=$[end_timeStamp-begin_timeStamp]
echo "sqoop total time used:" $du_time "s"
--export-dir 指定HDFS上的文件路径
--columns 指定要导出的列,可以只导出部分列

 

3. 官网说明文档:http://sqoop.apache.org/docs/1.4.7/SqoopUserGuide.html

要查更多参数和用法可以直接查询官方文档。

import说明文档地址:http://sqoop.apache.org/docs/1.4.7/SqoopUserGuide.html#_literal_sqoop_import_literal

export说明文档地址:http://sqoop.apache.org/docs/1.4.7/SqoopUserGuide.html#_literal_sqoop_export_literal

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/447409.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最佳的开源云项目有哪些?

Linux.com和The New Stack联合起来做了一个调查:你认为的最受欢迎的开源云项目是哪些?调查涵盖了hypervisors、IaaS、PaaS、管理和服务开通和其它类别的开源项目。所有项目较为成熟的、有规模的开源云项目。下一代的企业正在使用开放云技术打造完全不同的…

我们正处在“后开源”时代?

越来越多的软件不是用来出售的,而是用来增强互联网上所提供的各种服务的功能。开源的实际好处已经超过了你所看到的一面,但是现在还是有人纠结是用什么样的开源协议,只是不明白为什么还要和开源协议作斗争呢?自由软件和开源软件支…

解决:-source 1.6 中不支持 diamond 运算符 [ERROR] (请使用 -source 7 或更高版本以启用 diamond 运算符)

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 工程打包 mvn clean install 执行报错&#xff1a; 2. 解决方法&#xff0c;在pom中加上如下配置&#xff1a; <plugin><gr…

是什么摧毁了程序员的工作效率

本文是html5tricks原创翻译&#xff0c;转载请看清文末的转载要求&#xff0c;谢谢合作&#xff01; 下图是摘自网上有关程序员工作效率的论述。 正如Homer Simpson所说&#xff0c;如果这是真的&#xff0c;那就有意思了。 我之所以不能一针见血地发现如何才能高效工作的秘密…

解决:single failed: For artifact {null:null:null:jar}: The groupId cannot be empty. 把工程依赖的jar包打到入jar中

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 执行 mvn clean install 报错&#xff1a; Execution make-assembly of goal org.apache.maven.plugins:maven-assembly-plugin:2.4…

解决:Exception in thread main java.lang.NoSuchMethodError: com.google.common.util.concurrent.MoreExe

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1.报错&#xff1a; Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.util.concurrent.MoreEx…

云计算技术背后的天才程序员:Open VSwitch鼻祖Martin Casado

摘要&#xff1a;Martin Casado被称为软件定义网络之父&#xff0c;OpenFlow的发明人、Nicira的创始人、硅谷最炙手可热的“40 under 40”之一&#xff0c;另外&#xff0c;他提交的虚拟交换机Open VSwitch的第一个Commit揭开波澜壮阔的软件定义网络时代。 【编者按】在一次采…

Maven Helper 安装使用(jar 包管理工具)

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 一般用这款插件来查看maven的依赖树。在不使用此插件的情况下&#xff0c;要想查看maven的依赖树就要使用Maven命令maven dependency:tr…

云计算技术背后的那些天才程序员:KVM之父Avi Kivity

摘要&#xff1a;KVM以其精简的架构&#xff0c;清晰的定位获得Linux社区多数开发人员的支持并快速被合并入主干&#xff0c;从而成为x86全虚拟化技术的一颗新星&#xff0c;其提出者Avi Kivity对于计算机体系架构和Linux内核有深入理解&#xff0c;并且精通汇编和C。 提到以色…

解决:Unable to access jarfile xxx-0.0.1-SNAPSHOT.jar

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1.执行&#xff1a; java -jar xxx.0.0.1-SNAPSHOT.jar 报错&#xff1a; Unable to access jarfile xxx-0.0.1-SNAPSHOT.jar 2.原…

与Linus Torvalds“并列”,虚拟化天才程序员法布里斯贝拉

摘要&#xff1a;谈起阿兰图灵、高德纳、艾兹赫尔戴克斯特拉&#xff0c;我们并不陌生&#xff0c;这些振聋发聩名字背后是颠覆了人类生活的现代计算机工业。然而有些人的荣誉却远低于他的贡献&#xff0c;比如Fabrice&#xff0c;过去20年最闪亮和最有影响力的程序员之一。 【…

工具类:获取 spring 容器中 bean

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 package com.orange.utils;import org.springframework.beans.BeansException; import org.springframework.context.ApplicationConte…

数据vs.算法,究竟谁更重要

摘要&#xff1a;数据和算法究竟哪个更重要并没有一个明确的界定&#xff0c;根据不同的情境和应用&#xff0c;它们发挥的作用不同。虽然实际情况确实如此&#xff0c;但是在数据为王的时代&#xff0c;算法的关心似乎已只停留在某些领域或者某些公司里面。 【编者按】随着服…

JDK8 集合排序 xxxList.stream.sorted(...)

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 # 默认 list.stream().sorted() list.stream().sorted(Comparator.reverseOrder()) # 按字段排序 xxxList.stream().sorted(Comparato…

云数据中心选址PK:微软第一,IBM第二,谷歌最少

摘要&#xff1a;多区域数据中心往往可以侧面说明服务的可用性&#xff0c;在这个方面&#xff0c;Azure以12个区域领先&#xff0c;接着是Softlayer 9个&#xff0c;Amazon 8个&#xff0c;Rackspace 6个。Google比较落后&#xff0c;只有3个。 【编者按】当下&#xff0c;各…

解决:Unexpected token (START_OBJECT), expected START_ARRAY: need JSON Array to contain As.WRAPPER_ARRA

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. redisTemplate 报错&#xff1a; Caused by: com.fasterxml.jackson.databind.JsonMappingException:Unexpected token (START_OBJEC…

用户暴增下的收入降低,AWS面临尴尬

摘要&#xff1a;虽然摩尔定律和规模经济会带来成本效益&#xff0c;但是在大量的竞争下&#xff0c;AWS的收益已明显降低&#xff0c;而10%的股价下降更带来了投资者的不满。 【编者按】虽然亚马逊的云业务远远超过了IBM、HP和Google等巨头科技软件公司&#xff0c;但是其增长…

解决:Caused by: redis.clients.jedis.exceptions.JedisDataException: WRONGTYPE Operation against a key

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 报错&#xff1a; Caused by: redis.clients.jedis.exceptions.JedisDataException: WRONGTYPE Operation against a key holding t…

为什么软件测试需要变革?

摘要&#xff1a;世易时移&#xff0c;现今的科技发展一日千里&#xff0c;软件测试这门科学也到了该进行革命的时候了。作者Bhumika Mehta认为软件测试需要的就是想法与创意。没有想法的测试人员可能在测试这条路上不会走得太远。 世易时移&#xff0c;现今的科技发展一日千里…

websocke 在线测试地址

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 记录一个websocke在线测试地址&#xff1a; http://www.websocket-test.com/