我正在尝试通过Hive使用DESCRIBE函数将每个表的列描述输出到单个文件。我发现了-f选项,所以我只能从文件中读取并将输出写回:
hive -f nameOfSqlQueryFile.sql > out.txt
但是,如果我打开输出文件,它会重新抛出所有描述,并且不清楚一个表的开始位置和结束位置。
所以,我尝试制作一个批处理文件,使用-e分别描述每个表并输出到文件中:
#!/bin/bash
nameArr=( $(hive -e 'show tables;') )
count=0
for i in "${nameArr[@]}"
do
echo 'Working on table('$count'): '$i
hive -e 'describe '$i > $i'_.txt';
count=$(($count+1))
done
但是,因为这需要为每个查询重新连接,所以它非常慢,需要花费数小时才能处理数百个查询。
有没有人知道我怎么可能运行这些DESCRIBE函数,并理想地输出到单独的文件?
答案 0 :(得分:1)
您可以使用其中一种,具体取决于您处理输出的方式:
如果您只是将输出文件用作手动参考,请插入一个SQL语句,在每个表之间打印您选择的分隔符,例如:
DESCRIBE table;
SELECT '-----------------' FROM table;