百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT技术 > 正文

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

wptr33 2025-02-15 01:24 18 浏览

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

来我们开干。

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

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

我们先直接上脚本

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 and   t1.TABLE_SCHEMA = t2.TABLE_SCHEMA 
		WHERE
			t1.TABLE_NAME = 'book_module_stencil'  and t1.TABLE_SCHEMA='yyb_test'
			
		) t3 
	GROUP BY
		TABLE_NAME,
	TABLE_COMMENT 
	) t4;

book_module_stencil 替换成你的表名称。

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

执行结果是这样的



格式化后是这样的

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 "模块模版表";

今天的分享就到这里。

相关推荐

什么是Java中的继承?如何实现继承?

什么是继承?...

Java 继承与多态:从基础到实战的深度解析

在面向对象编程(OOP)的三大支柱中,继承与多态是构建灵活、可复用代码的核心。无论是日常开发还是框架设计,这两个概念都扮演着至关重要的角色。本文将从基础概念出发,结合实例与图解,带你彻底搞懂Java...

Java基础教程:Java继承概述_java的继承

继承概述假如我们要定义如下类:学生类,老师类和工人类,分析如下。学生类属性:姓名,年龄行为:吃饭,睡觉老师类属性:姓名,年龄,薪水行为:吃饭,睡觉,教书班主任属性:姓名,年龄,薪水行为:吃饭,睡觉,管...

java4个技巧:从继承和覆盖,到最终的类和方法

日复一日,我们编写的大多数Java只使用了该语言全套功能的一小部分。我们实例化的每个流以及我们在实例变量前面加上的每个@Autowired注解都足以完成我们的大部分目标。然而,有些时候,我们必须求助于...

java:举例说明继承的概念_java继承的理解

在现实生活中,继承一般指的是子女继承父辈的财产。在程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系。例如猫和狗都属于动物,程序中便可以描述为猫和狗继承自动物,同理,...

从零开始构建一款开源的 Vibe Coding 产品 Week1Day4:业界调研之 Agent 横向对比

前情回顾前面两天我们重点调研了了一下Cursor的原理和Cursor中一个关键的工具edit_file的实现,但是其他CodingAgent也需要稍微摸一下底,看看有没有优秀之处,下...

学会这几个插件,让你的Notepad++使用起来更丝滑

搞程序开发的小伙伴相信对Notepad++都不会陌生,是一个占用空间少、打开启动快的文件编辑器,很多程序员喜欢使用Notepad++进行纯文本编辑或者脚本开发,但是Notepad++的功能绝不止于此,...

将 node_modules 目录放入 Git 仓库的优点

推荐一篇文章Whyyoushouldcheck-inyournodedependencies[1]...

再度加码AI编程,腾讯发布AI CLI并宣布CodeBuddy IDE开启公测

“再熬一年,90%的程序员可能再也用不着写for循环。”凌晨两点半,王工还在公司敲键盘。他手里那份需求文档写了足足六页,产品经理反复改了三次。放在过去,光数据库建表、接口对接、单元测试就得写两三天。现...

git 如何查看stash的内容_git查看ssh key

1.查看Stash列表首先,使用gitstashlist查看所有已保存的stash:...

6万星+ Git命令懒人必备!lazygit 终端UI神器,效率翻倍超顺手!

项目概览lazygit是一个基于终端的Git命令可视化工具,通过简易的TUI(文本用户界面)提升Git操作效率。开发者无需记忆复杂命令,即可完成分支管理、提交、合并等操作。...

《Gemini CLI 实战系列》(一)Gemini CLI 入门:AI 上命令行的第一步

谷歌的Gemini模型最近热度很高,而它的...

deepin IDE新版发布:支持玲珑构建、增强AI智能化

IT之家8月7日消息,深度操作系统官方公众号昨日(8月6日)发布博文,更新推出新版deepin集成开发环境(IDE),重点支持玲珑构建。支持玲珑构建deepinIDE在本次重磅更...

狂揽82.7k的star,这款开源可视化神器,轻松创建流程图和图表

再不用Mermaid,你的技术文档可能已经在悄悄“腐烂”——图表版本对不上、同事改完没同步、评审会上被一句“这图哪来的”问得哑口无言。这不是危言耸听。GitHub2025年开发者报告显示,63%的新仓...

《Gemini CLI 实战系列》(五)打造专属命令行工具箱

在前几篇文章中,我们介绍了GeminiCLI的基础用法、效率提升、文件处理和与外部工具结合。今天我们进入第五篇...