Hive数据库数据表元数据导出脚本

表结构导出

 

复制代码
## @Title  Hive库表元数据导出脚本
## @Author changxy

#!/bin/bash


##############注意修改Hive连接信息###############
hive=jdbc:hive2://127.0.0.1:10000
#################################################



# 获取当前时间
date=$(date +%H%M)
# 导出脚本保存目录
dir=/home

# 执行查询数据库命令
exec=$(beeline -u $hive -n hive -e "show databases;")
# 按照换行分隔为数组
databases=(${exec//\\n/})
# 遍历数据库
for db in "${databases[@]}"
do
    if [[ $db != +* && $db != _* && $db != \| && $db != database_name ]]
    then
        # 写入创建数据库语句导出脚本文件
        echo "CREATE DATABASE IF NOT EXISTS $db;" >> $dir/hive_export_$date.sql
        
        # 执行show tables语句查询数据表
        exec=$(beeline -u $hive -n hive -e "use $db; show tables;")
        # 替换|字符
        exec=${exec//|/}
        # 根据换行转为数组
        tables=(${exec//\\n/})

        # 遍历数据表
        for tab in "${tables[@]}"
        do

            if [[ $tab != +* && $tab != tab_name ]]
            then
                echo "数据表: "$tab
                # 获取创建表DDL
                exec_create_table_ddl=$(beeline -u $hive -n hive -e "use $db; show create table $tab;")
                # 根据|分隔为数组对象
                lines=(${exec_create_table_ddl//\|/})
                # 定义create table dll语句
                ddl=''
                # 遍历create table ddl
                for line in "${lines[@]}"
                do
                    # 遇到ROW FORMAT SERDE跳出当前循环
                    if [[ $line == ROW ]]; then
                        break
                    elif [[ $line != +* && $line != createtab_stmt ]]; then
                        # 拼接create table脚本
                        ddl="$ddl $line"
                    fi
                done;
                # create table脚本最后面加上分号
                ddl="$ddl ;"
                # 写入导出文件
                echo $ddl >> $dir/hive_export_$date.sql
            fi

        done;

    fi
done
复制代码

 

表结构导入

 

hive -f hive_export_1525.sql

 

posted @   codest  阅读(758)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示