sqoop脚本导入将oracle数据库下的组的所有表数据导入hdfs

本文介绍了如何使用sqoop从oracle数据库全量迁移到hdfs,包括编写脚本循环导入多表及查询oracle所有表名的方法。适合CDH-5.15.0和sqoop1环境。

Sqoop 是一个设计用于在 Apache Hadoop 和结构化数据存储(如关系数据库)之间高效地传输大批量数据的工具。

从oracle全量数据迁移到hdfs

oracle无法进行多表导入hdfs 小编琢磨了很久 决定写一个脚本 循环导入 再调用sqoop命令 看以下操作:

一、明确小编使用组件以及版本

CDH-5.15.0-1.cdh5.15.0.p0.21
sqoop1
oracle

二、sqoop将oralce多表同时向hdfs全量导入脚本编写

下面展示一个 小编自己配置的脚本

// 直接上脚本
#!/bin/sh

#sqoop执行路径
export sqoop_path=/opt/cloudera/parcels/CDH-5.15.0-1.cdh5.15.0.p0.21/bin

#自定义的日志输出文件
export sqoop_logs=/var/log/sqoop.log 

#检测该路径是否存在
#
if [ !  -e ${sqoop_path} ] 
then
    exit
else
   echo "Directory exists !" >> $sqoop_logs
fi
#


#oracle数据库表    放你所有想导入的表名    以空格区分  
tables=(JAVA PHP PYTHON HADOOP SQOOP SPARK FLINK HIVE USER TMP)

#连接配置
oracle_driver=jdbc:oracle:thin:@10.10.100.89.10:1521/big

#用户名
username=jiansuo

#密码
password=123456
 
#for循环遍历tables 然后sqoop调用
for table in ${tables[@]}
do 
      ${sqoop_path}/sqoop import  \      
      --connect ${oracle_driver}  \
      --username ${username}  \
      --password ${password}  \
      --target-dir /asasa/asas/big/asasa/${table}/  \   # hdfs 地址
      --fields-terminated-by ","   \   
      --lines-terminated-by "\n"   \
      --num-mappers 4   \
      --table big.${table}  \     # 我这里的SIMIS是我数据库下面的组名  没有可以不写
      --compression-codec com.hadoop.compression.lzo.LzopCodec  \    #  lzo压缩
      --autoreset-to-one-mapper  \   # 无主键则选择一个map
      --as-textfile 
  echo $table导入完毕
  
#判断sqoop执行结果,失败退出
if [ $? -ne 0 ]; then  
	exit
else
	echo " ${table} Successfully !" >> $sqoop_logs
fi
done
 

                               hdfs已经有各级目录导入成功

在这里插入图片描述

                               注意一个参数 我上面没有提到过
// A code block
#sqoop  操作关系数据库的表,会被映射为一个java类   一个class文件  可以自定义地址 
 				      自己一定要知道默认地址在哪里 ,方便下游处理
--outdir  /xxx/xxx/xxx      #生成的java文件存放文职

在这里插入图片描述

三、查询oracle的所有表名我们可以这么做
select TABLE_NAME from ALL_TABLES WHERE OWNER=' xx '

在这里插入图片描述
将查询的表名 导出文档 最后使用Ctrl+H 把表名之间替换成空格就ok了
在这里插入图片描述
小编还有的别的教程和工作中遇到的问题解决方法 可以关注一下查看哦!!!

** 本次教程到此结束了,如果小伙伴在执行以上步骤遇到了问题,可以私信我,我随时都在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值