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
  • asp之家 网络编程 m.aspxhome.com