Python脚本同步Hive表结构到MySQL

4 篇文章 0 订阅
3 篇文章 0 订阅
  • 环境说明:pycharm2022.3.2连接虚拟机远程环境,具体详见上一篇。
import pymysql
from pyhive import hive

# 连接Hive数据库
hive_conn = hive.Connection(host='hadoop102',
                            port=10000,
                            database='db_hive')
hive_cursor = hive_conn.cursor()

# 连接MySQL数据库
mysql_conn = pymysql.connect(host='hadoop102', user='xxxx',
                             password='xxxxxx', database='xxx')
mysql_cursor = mysql_conn.cursor()

# 获取Hive表结构信息
hive_cursor.execute('SHOW TABLES')
tables = hive_cursor.fetchall()
# [('category_info',) , ('order_info',), ('user_login_detail',)]

# 同步表结构到MySQL
for table_name in tables:
    print(f'DESCRIBE {table_name[0]}')
    hive_cursor.execute(f'DESCRIBE {table_name[0]}')
    columns = hive_cursor.fetchall()

    create_table_sql = f'CREATE TABLE {table_name[0]} ('
    for column in columns:
        # 进行数据类型映射(以下数据类型转换可根据具体内容做调整,本案例仅用于简单的表结构同步)
        if column[1].startswith('string'):
            data_type = 'VARCHAR(255)'
        elif column[1].startswith('int'):
            data_type = 'INT'
        elif column[1].startswith('double'):
            data_type = 'DOUBLE'
        else:
            # 其他类型映射为VARCHAR(255)
            data_type = 'VARCHAR(255)'

        create_table_sql += f'{column[0]} {data_type}, '
        print(create_table_sql)

    create_table_sql = create_table_sql[:-2] + ')'
    print(create_table_sql)

    mysql_cursor.execute(create_table_sql)

# 关闭连接
hive_cursor.close()
hive_conn.close()
mysql_cursor.close()
mysql_conn.close()
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值