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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章