自动生成根据mysql表创建hive表脚本

2023-10-26

#!/bin/bash
source /etc/profile

#该脚本为手动传参根据MySQL表信息创建hive表
#输入参数判断逻辑 必须数据两个参数,一个是MySQL库名,第二个是表名
#if [ $# -eq 2 ];then
#		db_name=$1 ##mysql 库名
#		tbl_name=$2 ##MySQL 表名
#else
#        echo "参数个数错误"
#		exit 8
#fi

db_name=$1
tbl_name=$2

DB_HOST='ip'
DB_PORT='port'
DB_NAME=$db_name
TBL_NAME=$tbl_name
USERNAME='name'
PASSWORD='password'
PARAMS='?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai'

HIVE_DB='库名'
HIVE_TIR='表前缀'
HIVE_TBL=$HIVE_TIR'_'$DB_NAME'_'$TBL_NAME
echo $HIVE_TBL

echo 'DB_NAME='$DB_NAME
echo 'TBL_NAME='$TBL_NAME

#构建hive建表语句

DDL_TMP=`mysql -h${DB_HOST} -P${DB_PORT} -u${USERNAME} -p${PASSWORD} information_schema -e "

SET SESSION group_concat_max_len=102400; 

SELECT
CONCAT('CREATE TABLE IF NOT EXISTS ',
'${HIVE_DB}',
'.',
'${HIVE_TBL}',
' ( ',
SUBSTRING(column_info, 1, LENGTH(column_info) - 1),
')',
' COMMENT ',
'\'',
TABLE_COMMENT,
'\'',
' ROW FORMAT DELIMITED FIELDS TERMINATED BY ',
'\'\\t\'' ,
' WITH SERDEPROPERTIES (\'field.delim\'=',
'\'\\t\'' ,
',',
'\'serialization.format\'=',
'\'\\t\'' ,
')',
' STORED AS TEXTFILE',
';') AS ddl
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 = 'tinyint' THEN 'tinyint'
			WHEN DATA_TYPE = 'smallint' THEN 'smallint'
			WHEN DATA_TYPE = 'mediumint' THEN 'int'
			WHEN DATA_TYPE = 'int' THEN 'int'
			WHEN DATA_TYPE = 'integer' THEN 'int'
			WHEN DATA_TYPE = 'bigint' THEN 'bigint'
			WHEN DATA_TYPE = 'float' THEN 'float'
			WHEN DATA_TYPE = 'double' THEN 'double'
			WHEN DATA_TYPE = 'decimal' THEN 'decimal'
			WHEN DATA_TYPE = 'datetime' THEN 'string'
			WHEN DATA_TYPE = 'timestamp' THEN 'string'
			WHEN DATA_TYPE = 'char' THEN 'string'
			WHEN DATA_TYPE = 'varchar' THEN 'string'
			WHEN DATA_TYPE = 'text' THEN 'string'
			ELSE 'string'
		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
	WHERE
		t1.TABLE_NAME = '$TBL_NAME' ) t3
GROUP BY
	TABLE_NAME,
	TABLE_COMMENT ) t4;

"`

#echo 'DDL_TMP='$DDL_TMP
#截取获得正确的建表语句
DDL=${DDL_TMP:3}
echo 'DDL='$DDL

#hive建表语句
#beeline -u "jdbc:hive2://hadoop001:10000/" -n hive -p hive -e "$DDL"
#impala-shell建表
#impala-shell -q "$DDL" -i localhost
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自动生成根据mysql表创建hive表脚本 的相关文章

  • SQL数据库自动备份[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有一个 SQL 数据库 我需要每天 至少 备份它 最好每天多次 自动 这样它肯定会完成 我正在运行
  • JPA Criteria API:用于可选关系的 LEFT JOIN

    我基本上是第一次使用 Criteria API 这是关于抽象通用构建器的查询 public TypedQuery
  • 如何将文件的内容与列最后一个数字的增量连接起来

    我有一个包含一些内容的文件 需要重复第 n 次并添加最后一列号的增量 Input content of a file TCTA 7 ccta TCTA 1 TCTA 8 ccta TCTA 1 TCTA 9 ccta TCTA 1 TCTA
  • 如何在innerhtml中使用ajax和php更新mysql数据库

    如何使用ajax和php更新mysql数据库而不刷新页面 这里有一个好例子 http www w3schools com PHP php ajax database asp 它显示了一个SELECT声明 但它应该是直接的 并且可以轻松地将脚
  • Teradata:数据透视中的 IN 子句无法从表中获取数据

    我想提取一些Calender Weeks从年度数据来看 完成后 我想旋转它 以便每个都有一行ID 我们有一张桌子DB MY CWs只有一列CW含有Calender Weeks我们感兴趣 以下代码提取相关内容Calender Weeks CR
  • 缓存 MySQL 查询

    有没有简单的缓存方法MySQL queries in PHP或者如果做不到这一点 是否有人编写并提供了一个小类集可以做到这一点 我可以缓存整个页面 但这不起作用 因为有些数据发生变化 但有些数据没有变化 我想缓存不变化的部分 这是关于如何在
  • 如何使用 SQLAlchemy 选择 PostgreSQL 系统列?

    Postgresql 在每个表上隐式定义了几个列 例如xmax and ctid see docs https www postgresql org docs current ddl system columns html 假设我的 SQL
  • 这个查询可以安全地避免 SQL 注入吗?

    该脚本使用 PHP 编写 作为数据库 我使用 MySQL 这是脚本本身 unsafe variable GET user input sql sprintf INSERT INTO table column VALUES s unsafe
  • 在 Sybase ASE 中更新插入(更新或插入)?

    我正在编写一个应用程序 将数据从 Oracle 移动到 Sybase 并且需要执行更新 插入操作 在 Oracle 中 我会使用 MERGE INTO 但它似乎在 Sybase 中不可用 无论如何 在 ASE 中也不可用 我知道这可以通过多
  • MySQL 服务器无法在 Raspberry Pi 上启动 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在使用运行 Debian Linux 的 Raspberry Pi 我正在尝试安装 MySQL 服务器并运行它 这是我所做的 sudo
  • Presto SQL 窗口聚合回顾 x 小时/分钟/秒

    我想通过回顾 x 小时 分钟 秒前来对 presto sql 进行聚合 Data id timestamp status A 2018 01 01 03 00 00 GOOD A 2018 01 01 04 00 00 BAD A 2018
  • 如果磁盘可用空间很少,如何优化 9GB 表?

    我在 12GB 磁盘上有一个 9GB myisam 表 有 5MB 可用空间 我如何optimize桌子 问题是OPTIMIZE通过将整个表复制到一个新文件来工作 因此我需要 9GB 的可用空间才能成功 我能想到的唯一解决方案是 停止在桌子
  • MySQL - 按 count() 和 GROUP BY 排名

    我有我的 mysql 表posts 我的论坛的所有帖子都存储在其中 就像这样 id uid thread post title text time int int varchar int varchar text int 现在我想显示用户个
  • 如何检查 IP 是否位于这些子网之一

    我有大约 12600 个子网 例如 123 123 208 0 20 和一个IP 我可以使用 SQLite 数据库或数组或其他任何东西 大约一个月前有人问过一个类似的问题 但是我不是在寻找针对一个子网检查一个IP 而是针对一堆子网 显然是最
  • 从 AWS EC2 MySQL 数据库迁移到 Azure MySQL 数据库导致性能非常差且缓慢

    我们有一个非常小的 150MB 的 MySQL 数据库 它在 AWS t2 large 数据库作为自托管的情况下运行得非常快 硬件规格 Azure 2 个 vCPU 10 GB 内存 AWS 2 个 vCPU 8 GB 内存 不过 该公司决
  • Hibernate @Enumerated 似乎被忽略

    我有课Person使用带有枚举的注释进行映射Sex指的是性别 是男性还是女性 让我们来看看 Entity Table name PERSON public class Person Id GeneratedValue strategy Ge
  • 管理数据库更改的最佳方法[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 管理数据库更改的最佳方法是什么 无论数据库客户端的语言如何 我都需要有一个解决方案 另外 我希望能够在这些更改中使用特定的数据库功能
  • 如何在选择查询中创建新列

    在 MS Access 中 我想将新列插入到选择查询的返回结果中 新列的每一行都具有相同的值 例如 我的选择返回列 A B 我希望 C 成为选择查询创建的新列 A B C a1 b1 c a2 b2 c a3 b3 c select A B
  • 如何在 awk 中对模式进行 if else 匹配

    我尝试过以下命令 awk search pattern print 1 如何编写上述命令的 else 部分 经典方式 https www gnu org software gawk manual gawk html If Statement
  • 在 shell 中用字符串替换变量

    我将一个字符串作为参数传递给 shell 脚本 shell 脚本应该告诉我传递的参数是否是变量 像这样的东西 if z 1 then echo yes 1 is a variable and its value is 1 fi 但这给了我严

随机推荐

  • 学习大数据所需的关键知识

    在人工智能领域 学习大数据技术是一项重要的任务 随着数据的快速增长和各行各业对数据的需求不断增加 掌握大数据技术可以帮助我们有效地处理 存储和分析海量数据 本文将介绍学习大数据所需的关键知识 并提供相应的源代码示例 数据存储和处理 在学习大
  • 【背包问题】之01背包和完全背包

    文章目录 1 01 背包 1 1 题目描述 1 2 基本思路 1 3 空间上的优化 1 4 算法实现 1 5 递归版本 1 6 按照递归修改的动态规划版本 1 7 总结 2 完全背包 2 1 题目描述 2 2 基本思路 2 3 优化一下 2
  • C语言:冒泡排序法:将若干字符串按字母顺序(由小到大)排序输出

    include
  • 大二上详细计划(量化到周)

    目录 前言 统筹安排 每周量化 每周进度 总体 花絮 前言 1 思来想去 决定对大二上的四个月进行一个安排 量化每周任务 具体到一本书看多少页 一套视频学多少 每个节点任务完成度 2 我们都是思想上的巨人 行动上的矮子 各种各样的欲望会阻碍
  • SpringCloud:Gateway之StripPrefix使用

    StripPrefix 过滤配置 很多时候也会有这么一种请求 用户请求路径是 api goods 而真实路径是 goods 这时候我们需要去掉 api才是真实路径 此时可以使用StripPrefix功能来实现路径的过滤操作 如下配置 ser
  • c语言时间序列预测,2.5.2 扩展案例:预测离散值时间序列

    2 5 2 扩展案例 预测离散值时间序列 假设我们观察到取值为0或1的数据 每个时刻一个值 为了了解具体应用 假设这是每天的天气数据 1代表有雨 0代表没有雨 假设已经知道最近几天是否下雨 我们希望预测明天是否会下雨 具体而言 对于某个k值
  • C++指针

    指针是一个存放内存地址的变量 通过指针 可以间接操作其它变量 指针的常用操作 int a 0 定义一个变量 int p a 定义一个指针 并指向a p 1 通过指针间接操作a 此时a 1 注意 p的类型是int 访问区域为4字节 Ps in
  • Revit二次开发--过滤对象(Revit 2014)

    1 获取元素的ID 通过UIDocument的Selection属性获取当前视图中选中的元素的ID 类型 using System using System Collections Generic using System Linq usi
  • QT - QML 遇到 module “QtQuick.Controls“ version 2.5 is not installed 的相关问题的解决策略

    问题由来 在跟着视频敲代码时 需要用到 DelayButton 这个控件 因此需要导入相关的库模块 跟着视频敲的是import QtQuick Controls 2 5 但可能由于版本较低的原因没有安装这个库模块 根据输入提示 有个 imp
  • STM32F407的CAN通信实验CAN1CAN2的设置

    CAN2的初始化参照上一篇博文就OK了 需要修改的地方 配置过滤器 CAN FilterInitStructure CAN FilterNumber 14 那为什么要修改额 查datasheet 双 CAN CAN1 主 bxCAN 用于管
  • Flex应用程序启动详解

    编写一个简单的Flex应用程序并不复杂 就算你从来没接触过Flex程序设计 照着帮助的实例步骤 不需花多长时间也能做出一个漂亮简捷的小程序出来 不过 随着对Flex程序编写的深入 会越来越觉得 其实要编写一个好的Flex应用程序并不简单 涉
  • uniapp切片-可视化设计工具(一套代码编译到7个平台iOS、Android、H5、小程序)

    uni app 是一个使用 Vue js 开发跨平台应用的前端框架 开发者编写一套代码 可编译到iOS Android H5 小程序等多个平台 一套代码编到7个平台 难以置信吗 依次扫描7个二维码 亲自体验最全面的跨平台效果 uni app
  • C++之sort()函数详解,刷题必备~

    顾名思义 sort就是用来排序的函数 它根据具体情形使用不同的排序方法 效率较高 一般来说 不推荐使用C语言中的qsort函数 原因是qsort用起来比较烦琐 涉及很多指针的操作 而且sort在实现中规避了经典快速排序中可能出现的会导致实际
  • C# 中的sealed修饰符学习

    转载原地址 http developer 51cto com art 200908 147327 htm C 语言还是比较常见的东西 这里我们主要介绍C sealed修饰符 包括介绍两个修饰符在含义上互相排斥用于方法和属性等方面 C sea
  • python爬虫网络出错怎么办_Python爬虫异常处理

    100 继续 客户端应当继续发送请求 客户端应当继续发送请求的剩余部分 或者如果请求已经完成 忽略这个响应 101 转换协议 在发送完这个响应最后的空行后 服务器将会切换到在Upgrade 消息头中定义的那些协议 只有在切换新的协议更有好处
  • linux上redis常用命令以及遇到的问题

    1 在linux上解压缩后使用make命令进行编译的时候 错误类型 zmalloc h 50 31 致命错误 jemalloc jemalloc h 没有那个文件或目录 原因是因为编译的时候Linux默认内存分配器是jemalloc 而Re
  • 添加商品到购物车 Vuex

    商品详情 购物车页面 code
  • OFDM插入导频过程详解

    ofdm符号的长度 有效数据 cp的长度 cp就是将有效数据的后半部分1 4截取并添加到有效数据的开始部分 比如一个ofdm符号的长度为4us 那么有效数据的长度为3 2us cp的长度为0 8us 子载波的间隔 1 有效数据的长度 就是有
  • Unity使用c#开发遇上的问题(十三)(unity平台下使用 Vuforia 以及 ARFoundiation 的总结,根据个人观点)

    文章目录 前言 一 Vuforia的使用感觉 二 ARfoundiation的使用感觉 总结 前言 有一段时间没有更新系列的内容 上次更新完又重新思考了一下以后进行的方向 这里就目前接触的Vuforia 和 unity 自带的AR 之前叫A
  • 自动生成根据mysql表创建hive表脚本

    bin bash source etc profile 该脚本为手动传参根据MySQL表信息创建hive表 输入参数判断逻辑 必须数据两个参数 一个是MySQL库名 第二个是表名 if eq 2 then db name 1 mysql 库