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

业务场景:是在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

apache sgoop 导入数据到 oracle、导出数据到 oracle 实现相关推荐

  1. 从Oracle导出数据到TXT文件从TXT文件导入数据到Oracle

    如果是txt文件的数据导入oracle中,数据量大的话用pl/sql会卡死,那么就要用到sqlload命令. 前两天在做一个不算任务的任务,用shell脚本将数据库中的数据导出到文件,在万能的百度上找 ...

  2. oracle set feedback off,Oracle数据库之Oracle导出数据中的prompt,set feedback 等是什么意思...

    本文主要向大家介绍了Oracle数据库之Oracle导出数据中的prompt,set feedback 等是什么意思,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. mpt 输出 ...

  3. 灰色模型代码GM(1,1),从excel导入数据,亦可导出数据到excel中。

    灰色模型代码GM(1,1),从excel导入数据,亦可导出数据到excel中. 总结1:直接输出结果 %clc W= MicrosoftExcel;(从EXCEL导入数据后,matlab自动储存的数组 ...

  4. oracle 导出数据脚本

    oracle 导出数据脚本 #!/bin/sh mkdir /home/baes/tmp/data20141126; exp baes/baes@baes file=/home/baes/tmp/da ...

  5. oracle导出字符集命令,Oracle数据的导出及导入实现

    最近由于项目原因,我学习了Oracle数据库一些知识.数据的导出及导入,是任何数据库使用人员必备的一项技能,现给大家介绍一下Oracle数据的导出及导入实现方法. 数据的导出及导入,可以用命令exp/ ...

  6. oracle导出数据视频教程,Oracle导入导出数据的几种方式

    oracle导入导出数据 1.导出dmp格式文件 --备份某几张表 !!!! exp smsc/smsc file=/data/oracle_bak/dmp/bakup0209_2.dmp table ...

  7. oracle导出数据视频教程,Oracle数据导入导出基本操作示例

    Oracle数据导入导出基本操作示例 数据导出 a.将数据库orcl完全导出,用户名user 密码password 导出到D:\dc.dmp中 exp user/password@orcl   fil ...

  8. oracle导出exp步骤,oracle数据导出导入(exp/imp)

    1.本地数据库导入导出 1.导出 (运行---cmd中操作) exp 用户名/密码@数据库实例名file=本地存放路径 eg: exp jnjp/jnjp@ORCL file=C:/jnjp.dmp ...

  9. oracle导出到hive,从Oracle导出数据并导入到Hive

    1.配置源和目标的数据连接 源(oracle): 目标(Hive 2.1.1),需要事先将hive的驱动程序导入HHDI的lib目录中. Hive2.1.1需要的jar包如下:可根据自身情况更换had ...

最新文章

  1. 查看Entity Framework生成的SQL语句
  2. 计算机科学与技术的知识要求,0812计算机科学与技术基本要求.doc
  3. html pre设置宽度,求救!html语言中pre宽度的设置属性!
  4. Java 8的装饰器模式
  5. html css div显示隐藏,Html-Css-div透明层剧中
  6. 几个不错的开源的.net界面控件[转贴]
  7. Qt/Embedded开发环境的的搭建(二)
  8. Java: Queue
  9. 顶点 java笔试_网易2014校园招聘杭州Java笔试题--题解--第一天
  10. PDFMiner 操作 PDF 文件
  11. 怎样用计算机做ppt,电脑怎么做ppt(教你几个小技巧做出高大上的ppt)
  12. ERROR: Failed to parse XML in E:\LWJ\AndroidStudioProjects\MyApplication6\app\src\main\AndroidManife
  13. 锤子手机便签导入另一个手机云便签中怎么操作?
  14. office图标不能正常显示
  15. RockChip Android平台抓取android trace的windows环境搭建
  16. 图形学学习笔记2——点阵图形光栅化
  17. 2021年ECNU计科考研复试机试 C. 子序列 (尺取)
  18. qwebkit的套壳开发
  19. Win10笔记本扩展显示屏模糊处理办法
  20. Python 实现图像快速傅里叶变换和离散余弦变换

热门文章

  1. protobuf2和3同时安装_在 Ubuntu 上安装 Protobuf 3 的教程详解
  2. 【FZU - 2202】犯罪嫌疑人(思维,假装建图,分类讨论)
  3. 【CodeForces - 255B】Code Parsing(思维,字符串)
  4. 七天入门图像分割(1):图像分割综述
  5. 函授本科统考计算机考试时间,函授2006级计算机、机电本科第一学期考试时间安排.doc...
  6. matlab 泡泡图,使用matlab绘制2维、3维气泡图
  7. 计算机表格收入水平怎么算,怎么用excel计算工资所得税
  8. Linux学习:第三章-Linux常用命令-1
  9. Python之数据拆分——groupby()方法
  10. 阿里Java编程规约(注释)提炼