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

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

e152db79ff210ad54b8b34831c285486.png
fb31c17f08946e2d88f9b5aa2060c446.png

来我们开干。

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

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

我们先直接上脚本

SELECTCONCAT('create table ',TABLE_NAME,'(',substring( column_info, 1, length( column_info ) - 1 ),')',' comment ','"',TABLE_COMMENT,'"',';' ) FROM(SELECTTABLE_NAME,TABLE_COMMENT,group_concat( CONCAT( COLUMN_NAME, ' ', DATA_TYPE, ' comment ', '"', COLUMN_COMMENT, '"' ) ) AS column_info FROM(SELECTt1.TABLE_NAME,CASEWHEN t2.TABLE_COMMENT = NULL THENt1.TABLE_NAME ELSE t2.TABLE_COMMENT END AS TABLE_COMMENT,COLUMN_NAME,CASEWHEN 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,CASEWHEN COLUMN_COMMENT = NULL THENCOLUMN_NAME ELSE COLUMN_COMMENT END AS COLUMN_COMMENT FROMCOLUMNS t1JOIN TABLES t2 ON t1.TABLE_NAME = t2.TABLE_NAME and   t1.TABLE_SCHEMA = t2.TABLE_SCHEMA WHEREt1.TABLE_NAME = 'book_module_stencil'  and t1.TABLE_SCHEMA='yyb_test') t3 GROUP BYTABLE_NAME,TABLE_COMMENT ) t4;

book_module_stencil 替换成你的表名称。

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

执行结果是这样的

4d5b0c3576f3978346fd8d207e23b7e9.png

格式化后是这样的

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

今天的分享就到这里。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值