Python——hive数据库迁移到mysql数据库

可能需要先看的内容(主要是依赖安装和连接hive时的报错问题解决)
sublime+python+hive

pip install

在这里插入图片描述

文件

from impala.dbapi import connect
import time
import pymysql

tables=['list_day']#所有要迁移的表名数组,本hive数据库和mysql数据库表名相同,字段也相同,所以比较简单

start_time=time.time()
conn1=connect(host='XXX',port=10000,database='js',auth_mechanism='PLAIN',user='c',password='c')
cur1=conn1.cursor(dictify=True)#返回字典列表
conn2=pymysql.connect(host='XXX',user='d',password='d',port=3306,database='e')
cur2=conn2.cursor()
#处理每一张表
for item in tables:
	try:
		sql1='select * from '+item
		cur1.execute(sql1)
		res1=cur1.fetchall()
		#处理每一行数据
		for _res1 in res1:
			#所有字段
			k=[str(ele).split('.')[1] for ele in _res1.keys()]#由于hive返回时字段是table.column形式,所以需要split处理
			#所有值
			v=[str(ele) for ele in _res1.values()]
			#逗号拼接 column1,culum2    value1,value2
			columns=','.join(k)
			values=','.join(v)
			print(columns,values)
			sql2='insert into %s (%s) values (%s);'%(item,columns,values)
			cur2.execute(sql2)
			print(sql2)
		conn2.commit()# 容易忘记
	except Exception as e:
		print(item,e)#输出未成功的表
		pass


end_time=time.time()
print(end_time-start_time)
cur1.close()
conn1.close()
cur2.close()
conn2.close()
发布了71 篇原创文章 · 获赞 12 · 访问量 1万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章