这两天由于测试程序,在hive的库里面建了好多表,测试完之后这些表就都没用了,几十个表要一个一个手动删除是很痛苦的,于是想到使用shell脚本来自动批量删除。
另外库里面的有些表是还有用的,有些表是没有用的,所以不能清库,所以我想到将要删除的表的表名写入一个文件中,然后使用shell来去读这个文件,从而批量删除指定要删除的表。
脚本如下:
#!/bin/bash
cat dtables.txt | while read line
do
echo "drop table $line;" >>tt.txt
done
tables=`cat tt.txt`
hive -e "use default;$tables"
rm -f tt.txt
首先,按行读取dtables.txt(事先将要删除的表名写入该文件)文件,即读取每一个要删除的表的表名;
然后,循环将删表语句"drop table tablename;"按行写入tt.txt这个临时文件中,即为每个待删除的表生成一个删表语句;
之后,启动hive,见所有的删表语句输出,执行删表操作;
最后,删除临时表tt.txt。
就这样,一个简单的批量删除hive表的脚本就完成了。