脚本内容如下:
#!/bin/bash
##获取数据库
databases=$(hive -e "show databases; exit;")
for database in $databases;
do
#获取hive建表语句
tables=$(hive -e "use $database; show tables;")
for table in $tables;
do
echo "--=========== db: $database , table: $table ==========="
echo "--=========== db: $database , table: $table ===========" >> /home/hadoop/hive_table_create20210129.hql
echo "$(hive -e "use $database;show create table $database.$table;");" >> /home/hadoop/hive_table_create20210129.hql
done
done
##获取数据库
#导出所有的数据库,并建库
hive -e "show databases;" > /home/hadoop/hive_database.hql
list=`cat /home/hadoop/hive_database.hql`
for val in $list
do
hive -e "create database $val;exit;"
done
批量导入
#一个hql文件,直接执行即可
hive -f /home/hadoop/hive_table_create20210129.hql
跳过指定库导出表建表语句
#1、先show databases导出所有的ku保存到hive_db.txt
#2、跳过指定库进行建表语句导出
#!/bin/bash
##获取数据库,跳过aaa,bbb,ccc,ddd
databases=$(grep -v 'aaa\|bbb\|ccc\|ddd' /home/hadoop/hive_db.txt)
for database in $databases;
do
#获取hive建表语句
tables=$(hive -e "use $database; show tables;")
for table in $tables;
do
echo "--=========== db: $database , table: $table ==========="
echo "--=========== db: $database , table: $table ===========" >> /home/hadoop/hive_table_create20210129_filtered.hql
echo "$(hive -e "use $database;show create table $database.$table;");" >> /home/hadoop/hive_table_create20210129_filtered.hql
done
done
Linux后台执行hive建表语句导出命令
nohup ./hive_bak_create_table_with_filter.sh > /home/hadoop/dump_hive_create_table.log 2>&1 &