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

 2022-10-27    409  

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

数据仓库工具方法-维度表同步

来我们开干。

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

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

我们先直接上脚本

SELECT
CONCAT(
'createtable',
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,'"'))AScolumn_info
FROM
(
SELECT
t1.TABLE_NAME,
CASE

WHENt2.TABLE_COMMENT=NULLTHEN
t1.TABLE_NAMEELSEt2.TABLE_COMMENT
ENDASTABLE_COMMENT,
COLUMN_NAME,
CASE

WHENDATA_TYPE='varchar'THEN
'string'
WHENDATA_TYPE='int'THEN
'int'
WHENDATA_TYPE='tinyint'THEN
'tinyint'
WHENDATA_TYPE='decimal'THEN
'double'
WHENDATA_TYPE='datetime'THEN
'string'
WHENDATA_TYPE='timestamp'THEN
'string'
WHENDATA_TYPE='float'THEN
'double'
WHENDATA_TYPE='double'THEN
'double'
WHENDATA_TYPE='bigint'THEN
'bigint'
ENDASDATA_TYPE,
CASE

WHENCOLUMN_COMMENT=NULLTHEN
COLUMN_NAMEELSECOLUMN_COMMENT
ENDASCOLUMN_COMMENT
FROM
COLUMNSt1
JOINTABLESt2ONt1.TABLE_NAME=t2.TABLE_NAMEandt1.TABLE_SCHEMA=t2.TABLE_SCHEMA
WHERE
t1.TABLE_NAME='book_module_stencil'andt1.TABLE_SCHEMA='yyb_test'

)t3
GROUPBY
TABLE_NAME,
TABLE_COMMENT
)t4;

book_module_stencil 替换成你的表名称。

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

执行结果是这样的

格式化后是这样的

CREATETABLEbook_module_stencil(
idstringCOMMENT"id",
NAMEstringCOMMENT"版块名称",
typestringCOMMENT"图书类型(0:教材;1:教辅;2课外)",
stu_iconstringCOMMENT"学生端配置图标的地址",
tea_iconstringCOMMENT"老师端配置图标的地址",
sortINTCOMMENT"排序",
remarksstringCOMMENT"备注信息",
create_bystringCOMMENT"创建者",
create_datestringCOMMENT"创建时间",
update_bystringCOMMENT"更新者",
update_datestringCOMMENT"更新时间",
CODEstringCOMMENT"编码(模块名称首字母)"
)COMMENT"模块模版表";

今天的分享就到这里。

  •  标签:  
  • MySQL
  •  

原文链接:https://77isp.com/post/10583.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。