HIVE数据导入MYSQL实现方式

*以下内容均转自其他CSDN博主的优秀内容

一、PYTHON脚本导数

import os
import pymysql
 
 
hive_sql = """
beeline -u jdbc:hive2://10.5.145.113:10000 -n 用户名 -p 密码 --showHeader=false --outputformat=csv2  -e "
SELECT * from table名;
"
"""
 
result = os.popen(hive_sql)
values = [x[:-1].split(',') for x in result]
 
 
db = pymysql.connect('IP地址', '用户名', '密码', '库名')
 
cursor = db.cursor()    #创建一个游标对象
 
mysql_sql = "insert into 库名.表名(col2, col2, col3, col4) values {}".format( 
",".join('("{}", "{}", {}, "{}")'.format(x[0], x[1],x[2],x[3]) for x in values) )
cursor.execute(mysql_sql)
db.commit()
 
res = cursor.fetchall()
print(res)
db.close()

 

 

二、SHELL脚本导数

#1、hive执行查询把数据保存到本地的文件中
hive_sql="SELECT * from table1 "

hive -i $base/init.sql -e "$hive_sql" > $base/date.data
# - i 引入hive查询参数的设置,map、reduce的个数,数据库的选择等;
# - e 执行写好的select查询

#2、把从hive中查询出来的数据导入到MySQL中(按照天先删除后添加),需要注意双引号别漏了
mysql -h127.0.0.1 -P3306 -uroot -p111111 -Dtest -e "
set names utf8;
delete from detail  where date=$date;
load data local infile '$base/date.data' into table detail
fields escaped by '' (date,field1,,field2);
"

#3、校验数据以及插入倒数标记位
#获取导入到MySQL的数据的条数
#mysql -h127.0.0.1 -P3306 -uroot -p111111 -Dtest -e "select count(1) from detail  where #date=$date"|awk 'NR > 1{print $0}' > $base/detail_check_date.data
#一旦有数则表明数据导入成功进行数据导入标记表插入标记(通过awk提取标记位)
#flag=`awk '{if($1 > 1) {print 1} else {print 0}} ' $base/detail_check_date.data`

#插入标记位
#mysql -h127.0.0.1 -P3306 -uroot -p111111 -Dtest -e "
#set names utf8;
#delete from monitor where date = $date and table_name ='detail';
#insert into monitor (date,table_name,complete_flag) values ($date,'detail',$flag)
#"
#删除临时文件
#/bin/rm -rf $base/date.data
#/bin/rm -rf $base/detail_check_date.data

 

你可能感兴趣的:(Hive常用功能)