可能需要先看的内容(主要是依赖安装和连接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()