当前位置: 首页 > news >正文

Sqoop(二):Hive导出数据到Oracle

把Hive中的数据导入Oracle数据库。

1. 解释一下各行代码:

sqoop export
# 指定要从Hive中导出的表
--table TABLE_NAME    
# host_ip:导入oracle库所在的ip:导入的数据库
--connect jdbc:oracle:thin:@HOST_IP:DATABASE_NAME # oracle用户账号
--username USERNAME
# oracle用户密码
--password PASSWORD # hive表数据文件在hdfs上的路径
--export-dir /user/hive/test/TABLE_NAME
# 指定表的列名,必须指定 
--columns ID,data_date,data_type,c1,c2,c3 # 列分隔符(根据hive的表结构定义指定分隔符)
--input-fields-terminated-by '\001'
# 行分隔符
--input-lines-terminated-by '\n' # 如果hive表中存在null字段,则需要添加参数,否则无法导入
--input-null-string '\\N' 
--input-null-non-string '\\N'

2. 案例:

sqoop export \
--connect jdbc:oracle:thin:@172.12.12.102:orcl \
--username test \
--password kong \
--table table_abc \
--export-dir /user/hive/warehouse/bonc_gjj.db/table_abc \
# 注意,这一行columns不能有多余的空格,否则会报错。
--columns zzjgdm,jgmc,jglx,jjlx,frdbhfzr,xzqhdm,yzbm,tzgb,hbzl,jgdz,dh,yxqzfrq,zczj,njq0,fzrq,zzzt,pzwhhzch,bfdw,lastdate,id,dir_id,dir_ver,dir_ver_serail_num,addtime,updatetime,edituser_id,edituser,editdept_id,editdept,inserttype,is_valid,audit_status,pk_md5,sys_encrypt \--input-fields-terminated-by '\001' \--input-lines-terminated-by '\n' \--input-null-string "\\\\N" \--input-null-non-string "\\\\N"

3. 表多的话,把所有表名存放在文件下,循环跑批每个表

#!/bin/bash 
a=0;
b=1;
# ``这两个反斜点,就是说里面这是一个变量,我的have_data_table_name是一个文件,里面存的是一堆表名。
# cat file_name,自己试试什么效果。for 开始循环表名。
for table_name in `cat ./have_data_table_name`doa=`expr $a + $b`echo "表名:$table_name,计数:$a";echo  "开始导入数据!"# 这一行就厉害了,简单来说就是取出一张表的所有列名,每个列名后加个逗号,然后去掉最后一个逗号,存在col这个变量中。col=`hive -e "desc database_name.${table_name}"|sed '1d'|awk '{printf $1","}'|sed 's/,$/\n/g'`sqoop export \
--connect jdbc:oracle:thin:@172.12.12.102:1521:orcl \
--username test \
--password kong \
--table ${table_name} \
--export-dir /user/hive/warehouse/database_name.db/${table_name} \
--columns ${col} \
--input-fields-terminated-by '\001' \
--input-lines-terminated-by '\n' \
--input-null-string "\\\\N" \
--input-null-non-string "\\\\N"echo "第${a}张表导入完毕!";
done

参考:
https://codeleading.com/article/51121246034/#google_vignette

http://www.lryc.cn/news/153572.html

相关文章:

  • HTML数字倒计时效果附源码
  • 以udp协议创建通信服务器
  • 【数据结构】队列篇| 超清晰图解和详解:循环队列模拟、用栈实现队列、用队列实现栈
  • js+html实现打字游戏v2
  • Python之作业(一)
  • uni-app 之 v-on:click点击事件
  • 迁移学习:实现快速训练和泛化的新方法
  • 蓝队追踪者工具TrackAttacker,以及免杀马生成工具
  • ELK日志收集系统(四十九)
  • Linux知识点 -- Linux多线程(四)
  • Java设计模式:四、行为型模式-07:状态模式
  • 很多应用都是nginx+apache+tomcat
  • 原型模式:复制对象的技巧
  • ClickHouse进阶(五):副本与分片-1-副本与分片
  • Android 华为手机荣耀8X调用系统裁剪工具不能裁剪方形图片,裁剪后程序就奔溃,裁剪后获取不到bitmap的问题
  • 《Flink学习笔记》——第十二章 Flink CEP
  • 谷歌IndexedDB客户端存储数据
  • 天气数据的宝库:解锁天气预报API的无限可能性
  • 插入排序(Insertion Sort)
  • 2023蓝帽杯初赛
  • 风险评估
  • 直播软件app开发中的AI应用及前景展望
  • vscode html使用less和快速获取标签less结构
  • excel中的引用与查找函数篇1
  • 【python】—— 函数详解
  • springboot web开发登录拦截器
  • 大数据课程K17——Spark的协同过滤法
  • 【力扣】1588. 所有奇数长度子数组的和 <前缀和>
  • socket,tcp,http三者之间的原理和区别
  • 【FPGA零基础学习之旅#11】数码管动态扫描