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
  • 相关阅读:
    Install Java on Ubuntu server
    Java 空引用访问静态不会发生空指针异常
    Java 什么时候使用static
    Java 空指针异常
    java 方法的返回值
    python中直接复制,浅拷贝,深拷贝
    python 操作ppt转换为pdf
    数组排序
    qooxdoo框架环境搭建
    python 链表实现 双向链表和单向循环链表
  • 原文地址:https://www.cnblogs.com/changxy-codest/p/14959081.html
Copyright © 2011-2022 走看看