社区编辑申请
注册/登录
数据仓库工具方法-维度表同步 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 "模块模版表"

 今天的分享就到这里。

 

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

2022-06-12 06:48:34

2022-06-08 13:25:51

数据

2022-06-23 11:42:22

MySQL数据库

2022-06-26 06:32:28

MySQL数据库维护

2022-06-29 09:43:14

SQL优化数据库

2022-05-11 09:02:27

Python数据库Excel

2022-05-30 11:10:04

数据库MySQL系统

2022-05-24 09:52:37

Spark SQL大数据处理Hive

2022-06-15 16:16:21

分布式数据库鸿蒙

2022-06-18 09:26:00

Flink SQLJoin 操作

2022-04-02 20:45:04

Hi3516开发板操作系统鸿蒙

2022-05-26 06:05:16

MySQL数据库

2022-06-22 09:56:19

PythonMySQL数据库

2022-06-22 09:19:55

HDC鸿蒙ADB命令

2022-06-27 23:44:37

云原生云存储云计算

2022-03-02 11:37:57

参数性能调优

2022-06-30 10:56:18

字节云数据库存储

2022-05-31 07:40:44

LsyncdCentOS7

2022-06-29 10:16:25

数据库SQL

2022-06-26 09:55:00

接口自动化项目

同话题下的热门内容

一次非常有意思的 SQL 优化经历:从 30248.271s 到 0.001s为什么MySQL的count()方法这么慢?面试突击:说一下MySQL事务隔离级别?解决MySQL幻读的终极指南为什么SQL语句命中索引比不命中索引要快?面试突击:什么情况会导致 MySQL 索引失效?MySQL 索引失效的几种类型以及解决方式你知道MySQL中的游标吗?

编辑推荐

MySQL集群搭建详解如果对MySQL还停留在这个印象,就out了防止服务器宕机时MySQL数据丢失的几种方案MySQL innodb引擎备份工具XtraBackup之二(数据库全备)MySQL优化: Slave延迟很大的优化方法总结
我收藏的内容
点赞
收藏

51CTO技术栈公众号