Mysql元数据如何生成Hive建表语句注释脚本详解
作者:sunjavakai 时间:2024-01-18 12:52:05
前言
本文主要给大家介绍了关于Mysql元数据生成Hive建表语句注释脚本的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍:
最近在将数据从Mysql 等其他关系型数据库 抽取到Hive 表中时,需要同步mysql表中的注释,以下脚本可以生成hive表字段注释修改语句。
注:其他关系型数据库如:oracle 可以通过相同的思路,读取元数据,修改脚本语法实现。
使用:
在mysql元数据库:information_schema 中执行以下语句
SELECT CONCAT('alter table ', TABLE_NAME, ' CHANGE COLUMN ', COLUMN_NAME, ' ', COLUMN_NAME, ' ', DATA_TYPE, ' comment ', '"', COLUMN_COMMENT, '"', ';')
FROM (SELECT TABLE_NAME, COLUMN_NAME, CASE WHEN DATA_TYPE = 'varchar' THEN 'string' WHEN DATA_TYPE = 'int' THEN 'int' WHEN DATA_TYPE = 'tinyint' THEN 'tinyint' WHEN DATA_TYPE = 'decimal' THEN 'double' WHEN DATA_TYPE = 'datetime' THEN 'string' WHEN DATA_TYPE = 'timestamp' THEN 'string' WHEN DATA_TYPE = 'float' THEN 'double' WHEN DATA_TYPE = 'double' THEN 'double' WHEN DATA_TYPE = 'bigint' THEN 'bigint' END AS DATA_TYPE, COLUMN_COMMENT
FROM COLUMNS
WHERE TABLE_NAME = 'o_oms_statistic_profit'
) t;
在将数据从Mysql 等其他关系型数据库 抽取到Hive 表中时,需要同步mysql表中的注释,以下脚本可以生成hive创建表语句。只是生成了hive表主要的字段信息,其他信息需要手工添加。
在mysql元数据库:information_schema 中执行以下语句
SELECT CONCAT('create table ', TABLE_NAME, '(', substring(column_info, 1, length(column_info) - 1), ')', ' comment ', '"', TABLE_COMMENT, '"', ';')
FROM (SELECT TABLE_NAME, TABLE_COMMENT, group_concat(CONCAT(COLUMN_NAME, ' ', DATA_TYPE, ' comment ', '"', COLUMN_COMMENT, '"')) AS column_info
FROM (SELECT t1.TABLE_NAME, CASE WHEN t2.TABLE_COMMENT = NULL THEN t1.TABLE_NAME ELSE t2.TABLE_COMMENT END AS TABLE_COMMENT, COLUMN_NAME, CASE WHEN DATA_TYPE = 'varchar' THEN 'string' WHEN DATA_TYPE = 'int' THEN 'int' WHEN DATA_TYPE = 'tinyint' THEN 'tinyint' WHEN DATA_TYPE = 'decimal' THEN 'double' WHEN DATA_TYPE = 'datetime' THEN 'string' WHEN DATA_TYPE = 'timestamp' THEN 'string' WHEN DATA_TYPE = 'float' THEN 'double' WHEN DATA_TYPE = 'double' THEN 'double' WHEN DATA_TYPE = 'bigint' THEN 'bigint' END AS DATA_TYPE, CASE WHEN COLUMN_COMMENT = NULL THEN COLUMN_NAME ELSE COLUMN_COMMENT END AS COLUMN_COMMENT
FROM COLUMNS t1 JOIN TABLES t2 ON t1.TABLE_NAME = t2.TABLE_NAME
WHERE t1.TABLE_NAME = 'o_oms_statistic_profit'
) t3
GROUP BY TABLE_NAME, TABLE_COMMENT
) t4;
来源:http://www.cnblogs.com/sunjava/p/7344876.html
标签:hive,元数据,mysql
0
投稿
猜你喜欢
Python多进程编程技术实例分析
2022-07-23 18:02:49
MySQL学习之基础命令实操总结
2024-01-16 17:27:32
JavaScript版的DateAdd、DateDiff、IsDate函数
2008-01-30 15:35:00
Python动态加载模块的3种方法
2023-12-22 21:33:29
python实现自动获取IP并发送到邮箱
2023-02-15 13:09:56
python复制列表时[:]和[::]之间有什么区别
2021-08-15 01:22:05
站长如何活用"nofollow"标签
2008-05-13 12:40:00
Python使用PyYAML库读写yaml文件的方法
2021-03-26 03:53:32
python标记语句块使用方法总结
2023-09-23 20:16:22
使用Pycharm(Python工具)新建项目及创建Python文件的教程
2022-06-07 11:43:52
Python Django模板系统详解
2021-09-05 23:17:20
Python日期的加减等操作的示例
2021-10-06 14:28:14
Python数据结构树与算法分析
2023-10-10 19:30:18
MySQL SQL语句优化的10条建议
2024-01-19 23:41:28
sqlserver巧用row_number和partition by分组取top数据
2024-01-28 12:33:39
老生常谈CSS网页布局的意义与副作用
2008-09-12 12:31:00
基于python二叉树的构造和打印例子
2023-05-16 15:35:45
使用python获取csv文本的某行或某列数据的实例
2021-06-13 14:11:20
python开启摄像头以及深度学习实现目标检测方法
2023-10-27 03:23:18
获取SQL Server数据库元数据的几种方法
2024-01-17 16:00:44