zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    spring-tool-suite-4-4.3.2.RELEASE-e4.12.0-win32.win32.x86_64 下载
    day39_Spring学习笔记_07_CRM_03
    MyEclipse 中 报错 ERROR PARSER:56
    day38_Spring学习笔记_06_CRM_02
    最简单的递归/死循环
    day37_Spring学习笔记_05_CRM_01
    如何在Linux中发现IP地址冲突
    如何在Linux中用命令行工具管理KVM虚拟环境
    使用 Shell 脚本自动化 Linux 系统维护任务
    Linux系统多网卡绑定实战
  • 原文地址:https://www.cnblogs.com/changxy-codest/p/14959081.html
Copyright © 2011-2022 走看看