数据仓库工具方法-维度表同步 MySQL表结构同步到Hive

数据库 MySQL 数据仓库
mysql 中的数据类型与Hive 是有区别的,但是他们有规律, 有规律就好办了, 我们可以通过写程序来批量处理,来提高我们的工作效率。

 mysql 中的数据类型与Hive 是有区别的,但是他们有规律, 有规律就好办了, 我们可以通过写程序来批量处理,来提高我们的工作效率。



来我们开干。

MySQL 中的表结构都是存在一个固定的数据库中,它的名字是:information_schema

字段是存储在固定的表中:COLUMNS

我们先直接上脚本

  1. SELECT 
  2.     CONCAT( 
  3.         'create table '
  4.         TABLE_NAME, 
  5.         '('
  6.         substring( column_info, 1, length( column_info ) - 1 ), 
  7.         ')'
  8.         ' comment '
  9.         '"'
  10.         TABLE_COMMENT, 
  11.         '"'
  12.         ';'  
  13. )  
  14. FROM 
  15.     ( 
  16.     SELECT 
  17.         TABLE_NAME, 
  18.         TABLE_COMMENT, 
  19.         group_concat( CONCAT( COLUMN_NAME, ' ', DATA_TYPE, ' comment ''"', COLUMN_COMMENT, '"' ) ) AS column_info  
  20.     FROM 
  21.         ( 
  22.         SELECT 
  23.             t1.TABLE_NAME, 
  24.         CASE 
  25.                  
  26.                 WHEN t2.TABLE_COMMENT = NULL THEN 
  27.                 t1.TABLE_NAME ELSE t2.TABLE_COMMENT  
  28.             END AS TABLE_COMMENT, 
  29.             COLUMN_NAME, 
  30.         CASE 
  31.                  
  32.                 WHEN DATA_TYPE = 'varchar' THEN 
  33.                 'string'  
  34.                 WHEN DATA_TYPE = 'int' THEN 
  35.                 'int'  
  36.                 WHEN DATA_TYPE = 'tinyint' THEN 
  37.                 'tinyint'  
  38.                 WHEN DATA_TYPE = 'decimal' THEN 
  39.                 'double'  
  40.                 WHEN DATA_TYPE = 'datetime' THEN 
  41.                 'string'  
  42.                 WHEN DATA_TYPE = 'timestamp' THEN 
  43.                 'string'  
  44.                 WHEN DATA_TYPE = 'float' THEN 
  45.                 'double'  
  46.                 WHEN DATA_TYPE = 'double' THEN 
  47.                 'double'  
  48.                 WHEN DATA_TYPE = 'bigint' THEN 
  49.                 'bigint'  
  50.             END AS DATA_TYPE, 
  51.         CASE 
  52.                  
  53.                 WHEN COLUMN_COMMENT = NULL THEN 
  54.                 COLUMN_NAME ELSE COLUMN_COMMENT  
  55.             END AS COLUMN_COMMENT  
  56.         FROM 
  57.             COLUMNS t1 
  58.             JOIN TABLES t2 ON t1.TABLE_NAME = t2.TABLE_NAME and   t1.TABLE_SCHEMA = t2.TABLE_SCHEMA  
  59.         WHERE 
  60.             t1.TABLE_NAME = 'book_module_stencil'  and t1.TABLE_SCHEMA='yyb_test' 
  61.              
  62.         ) t3  
  63.     GROUP BY 
  64.         TABLE_NAME, 
  65.     TABLE_COMMENT  
  66.     ) t4; 

 book_module_stencil 替换成你的表名称。

yyb_test 替换成你的数据库名称。

执行结果是这样的


格式化后是这样的

  1. CREATE TABLE book_module_stencil ( 
  2.     id string COMMENT "id"
  3.     NAME string COMMENT "版块名称"
  4.     type string COMMENT "图书类型(0:教材;1:教辅;2课外)"
  5.     stu_icon string COMMENT "学生端配置图标的地址"
  6.     tea_icon string COMMENT "老师端配置图标的地址"
  7.     sort INT COMMENT "排序"
  8.     remarks string COMMENT "备注信息"
  9.     create_by string COMMENT "创建者"
  10.     create_date string COMMENT "创建时间"
  11.     update_by string COMMENT "更新者"
  12.     update_date string COMMENT "更新时间"
  13. CODE string COMMENT "编码(模块名称首字母)"  
  14. ) COMMENT "模块模版表"

 今天的分享就到这里。

 

责任编辑:姜华 来源: 今日头条
相关推荐

2023-11-23 16:59:37

数据仓库建模

2024-01-03 08:14:33

GreatSQLMyCat库名字

2018-03-15 08:50:46

Hive-数据存储

2009-01-18 17:52:15

数据仓库SQL Server数据库

2021-04-15 07:40:44

数据仓库Hive环境搭建

2022-11-03 07:22:42

2010-11-23 14:58:05

MySQL复制表数据

2023-08-09 08:00:00

数据仓库数据架构

2023-08-31 08:32:52

2010-11-23 09:13:47

mysql修改表结构

2021-04-19 08:16:38

Hive数据类型大数据技术

2020-12-02 14:38:21

SQL数据库MySQL

2011-05-13 14:17:27

智能数据仓库

2011-08-25 18:09:36

SQL Server创建数据仓库已分区表

2011-03-22 13:49:20

SQL Server数维度表事实表

2023-06-08 08:43:36

2016-08-15 12:57:01

数据仓库索引架构维度索引

2023-02-02 09:46:24

2023-01-09 09:02:26

2009-03-30 10:53:37

体系结构数据仓库Oracle
点赞
收藏

51CTO技术栈公众号