项目上遇到了需要导出hive表结构的情况
尝试了用脚本导出
思路是,先把hive库里的表名先导出到一个文件,然后再遍历
具体如下
1.先获取对应库的所有表
hive -e "use wmdp_etl_dm;show tables;" > tables.txt
2.去掉不要的符号和行
这时候得到的文件可能会包含表头等没用的东西,后续遍历会报错
所以我们来去掉它们
sed -i 's/|//g' tables.txt
sed -i 's/-//g' tables.txt
sed -i 's/tab_name//g' tables.txt
sed -i 's/+//g' tables.txt
sed -i 's/ //g' tables.txt
sed -i '/^$/d' tables.txt
结果就是每行只剩下表名
3.遍历获取表结构
cat tables.txt |while read eachline
do
hive -e "show create table wmdp_etl_dm.$eachline" >> tablesDDL.txt
echo ";" >> tablesDDL.txt
done
最后再处理一下不要的行和符号就行了
sed -i 's/|//g' tablesDDL.txt
sed -i 's/-//g' tablesDDL.txt
sed -i 's/createtab_stmt//g' tablesDDL.txt
sed -i 's/+//g' tablesDDL.txt