相关文章推荐
茫然的茶叶  ·  分享篇 | ...·  3 周前    · 
大方的手电筒  ·  blob转file java - CSDN文库·  3 周前    · 
刀枪不入的红薯  ·  mysql ...·  2 周前    · 
月球上的荔枝  ·  mysql ...·  2 周前    · 
完美的红薯  ·  利用springboot2和elfinder ...·  1 年前    · 
冷静的乌冬面  ·  【PyQt5】designer ...·  1 年前    · 
cols = [] create_head = ''' create external table if not exists {0}.{1}('''.format(schema,table) if ispartition: create_tail = r''' partitioned by(inc_day string) row format delimited fields terminated by '\001' location '/hivetable/{0}';'''.format(table) else: create_tail = r''' row format delimited fields terminated by '\001' location '/hivetable/{0}';'''.format(table) connection=pymysql.connect(host='hostname', user='username', password='password', db='mysqldb', port=3306, charset='utf8' #获取一个游标 with connection.cursor(cursor=pymysql.cursors.DictCursor) as cursor: sql='SHOW FULL FIELDS FROM {0}'.format(table) cout=cursor.execute(sql) #返回记录条数 for row in cursor:#cursor.fetchall() #print(row) cols.append(row['Field']) if 'bigint' in row['Type']: row['Type'] = "bigint" elif 'int' in row['Type'] or 'tinyint' in row['Type'] or 'smallint' in row['Type'] or 'mediumint' in row['Type'] or 'integer' in row['Type']: row['Type'] = "int" elif 'double' in row['Type'] or 'float' in row['Type'] or 'decimal' in row['Type']: row['Type'] = "double" else: row['Type'] = "string" create_head += row['Field'] + ' '+ row['Type'] +' comment \'' + row['Comment'] + '\' ,\n' except: print('程序异常!') finally: connection.close() create_str = create_head[:-2] + '\n' + ')'+ create_tail return cols,create_str # 返回字段列表与你建表语句 cols,create_str = get_table_info("tablename") print(cols) print(create_str) 脚本可以直接从mysql 数据库里获取表信息,直接生成hive建表语句'''Created on 2017年6月29日@author: 80002419'''import pymysqlimport redef get_table_info(table,schema = '',ispartition = True): ''' table = 为表名,mysq
1.类型映射关系 mysql hive 中的数据类型存在差异,在 mysql 集成数据到 hive 中这样的场景下,我们希望在 hive 中的数据是贴源的,所以在 hive 中希望创建和 mysql 结构一致的 mysql hive 数据类型映射参考如下: mysql 数据类型 hive 数据类型整型bigintBIGINT整型intBIGINT整型smallintBIGINT整型tinyintBIGINT浮点型decimaldecimal浮点型doubleDOUBLE浮点型floatDOUBLE二进制binaryBINARY
source VARCHAR(100) NOT NULL, data_type1 VARCHAR(100) NOT NULL, target VARCHAR(100) NOT NULL,
最近在做 mysql hive 数仓的工作,由于业务 数量较大,单独写 hive DDL太过耗时,就找到了如下方法。 准备一张维度 :dim_ddl_convert, 建表语句 如下: CREATE TABLE dim_ddl_convert source VARCHAR(100) NOT NULL, data_type1 VARCHAR(100) NOT NULL, target VARCHAR(100) NOT NULL,
准备一张维度 :dim_ddl_convert, 建表语句 如下: DROP TABLE IF EXISTS `dim_ddl_convert`; CREATE TABLE `dim_ddl_convert` ( `source` varchar(100) NOT NULL, `data_type1` varchar(100) NOT NULL, `target` varchar(100) NOT NULL, `data_type2` varchar(100) DEFAULT NULL,
前序:format是 python 2.6新增的一个格式化字符串的方法,相对于老版的%格式方法,它有很多优点。 不需要理会数据类型的问题,在%方法中%s只能替代字符串类型 单个参数可以多次输出,参数顺序可以不相同 填充方式十分灵活,对齐方式十分强大 官方推荐用的方式,%方式将会在后面的版本被淘汰
你可以使用以下步骤将 MySQL 换为 Hive 并生成 建表语句 : 1. 在 MySQL 中运行SHOW CREATE TABLE语句,以 获取 MySQL 建表语句 。 2. 将 建表语句 中的引擎和字符集替换为 Hive 支持的引擎和字符集。 3. 将 建表语句 中的数据类型替换为 Hive 支持的数据类型。 4. 将 建表语句 中的AUTO_INCREMENT删除,因为 Hive 不支持自增长。 5. 将 建表语句 中的主键和索引删除,因为 Hive 不支持主键和索引。 6. 将 建表语句 中的分隔符替换为 Hive 支持的分隔符。 7. 生成 Hive 建表语句 并保存到文件中。 下面是一个示例 Python 脚本,可以将 MySQL 换为 Hive 并生成 建表语句 : ``` python import re def convert_ mysql _to_ hive ( mysql _create_table): # Replace engine and character set hive _create_table = mysql _create_table.replace('ENGINE=InnoDB', '') hive _create_table = hive _create_table.replace('DEFAULT CHARSET=utf8', 'ROW FORMAT DELIMITED FIELDS TERMINATED BY \',\'') # Replace data types hive _create_table = re.sub(r'int\(\d+\)', 'int', hive _create_table) hive _create_table = re.sub(r'varchar\(\d+\)', 'string', hive _create_table) hive _create_table = re.sub(r'text', 'string', hive _create_table) hive _create_table = re.sub(r'datetime', 'timestamp', hive _create_table) # Remove auto increment hive _create_table = re.sub(r'AUTO_INCREMENT=\d+ ', '', hive _create_table) # Remove primary key and indexes hive _create_table = re.sub(r',\n\s+PRIMARY KEY \(.+?\)', '', hive _create_table) hive _create_table = re.sub(r',\n\s+KEY .+? \(.+?\)', '', hive _create_table) # Replace delimiter hive _create_table = hive _create_table.replace(';', '\n') return hive _create_table # Example usage mysql _create_table = "SHOW CREATE TABLE mytable" hive _create_table = convert_ mysql _to_ hive ( mysql _create_table) with open(' hive _create_table.sql', 'w') as f: f.write( hive _create_table) 你需要将` mysql _create_table`替换为你的 MySQL 建表语句 ,并将生成的 Hive 建表语句 保存到` hive _create_table.sql`文件中。
cx_Oracle 报错:cx_Oracle.DatabaseError: DPI-1050: Oracle Client library must be at version 11.2 18070