mysql建表语句转hive sql
生活随笔
收集整理的這篇文章主要介紹了
mysql建表语句转hive sql
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1、參考代碼腳本
# CreateTableSql.py import re class CreateTableSql():def __init__(self,sql):self.create_table_mysql=sqldef analyse_mysql_create_table(self):"""解析mysql建表語句::param create_table_sql::return: 字段名稱、字段注釋、字段類型、表注釋"""# 字段名稱name_pattern = r"`(\w+)`"varname_list = re.findall(name_pattern, self.create_table_mysql)# 字段注釋comment_pattern = r"COMMENT \'(.*)\'"varcomment_list = re.findall(comment_pattern, self.create_table_mysql)# 字段類型type_pattern = r"` (.*) COMMENT"type_list = re.findall(type_pattern, self.create_table_mysql)# 表注釋tcomment_pattern = r"COMMENT='(.*)'"tcomment_list = re.findall(tcomment_pattern, self.create_table_mysql)return varname_list, varcomment_list, type_list, tcomment_listdef change_type(self,cloumns_type):'''mysql字段類型轉(zhuǎn)化成hive字段類型# type: mysql => hive sql'''if re.search(r'int', cloumns_type) != None:return 'BIGINT'elif re.search(r'decimal', cloumns_type) != None:return 'DOUBLE'elif re.search(r'varchar', cloumns_type) != None:return 'STRING'elif re.search(r'timestamp', cloumns_type) != None:return 'STRING'elif re.search(r'text', cloumns_type) != None:return 'STRING'elif re.search(r'datetime', cloumns_type) != None:return 'STRING'elif re.search(r'date', cloumns_type) != None:return 'STRING'elif re.search(r'char', cloumns_type) != None:return 'STRING'else:return cloumns_typedef mysql_to_hsql(self):"""生成Hive建表語句:return:"""varname_list, varcomment_list, type_list, tcomment_list = self.analyse_mysql_create_table()hive_sql = "create table " + str(varname_list[0] + "(\n")for i in range(len(varname_list) - 2):if i != len(varname_list) - 3:hive_sql = hive_sql + " " + str(varname_list[i + 1]) + " " + str(self.change_type(type_list[i])) + " comment \"" + str(varcomment_list[i]) + "\",\n"else:hive_sql = hive_sql + " " + str(varname_list[i + 1]) + " " + str(self.change_type(type_list[i])) + " comment \"" + str(varcomment_list[i]) + "\"\n"hive_sql = hive_sql + ") comment \"" + str(tcomment_list[0]) + "\";"print(hive_sql)2、CreateTableSql類使用說明:
from CreateTableSql import CreateTableSqlcreate_table_sql = """CREATE TABLE `members_infos` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主鍵id',`user_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '用戶id',`phone` varchar(20) NOT NULL DEFAULT '' COMMENT '手機號',`wechat` varchar(30) NOT NULL DEFAULT '' COMMENT '微信號',`owner` varchar(10) NOT NULL COMMENT '歸屬人',`actual_amount` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '實際銷售額',`complete_time` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '完成時間',`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時間',`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時間',PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=3935 DEFAULT CHARSET=utf8 COMMENT='會員表'; """cts=CreateTableSql(create_table_sql) cts.mysql_to_hsql() create table members_infos(id BIGINT comment "主鍵id",user_id BIGINT comment "用戶id",phone STRING comment "手機號",wechat STRING comment "微信號",owner STRING comment "歸屬人",actual_amount BIGINT comment "實際銷售額",complete_time BIGINT comment "完成時間",created_at STRING comment "創(chuàng)建時間",updated_at STRING comment "更新時間" ) comment "會員表";總結(jié)
以上是生活随笔為你收集整理的mysql建表语句转hive sql的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: console 程序随系统启动及隐藏当前
- 下一篇: sqlserver2008r2安装