Bash 运行大量配置单元查询并将输出写入文件
我试图通过配置单元使用descripe函数将每个表的列描述输出到各个文件中。我发现了-f选项,因此我可以从文件中读取并将输出写回:Bash 运行大量配置单元查询并将输出写入文件,bash,hive,Bash,Hive,我试图通过配置单元使用descripe函数将每个表的列描述输出到各个文件中。我发现了-f选项,因此我可以从文件中读取并将输出写回: hive -f nameOfSqlQueryFile.sql > out.txt 但是,如果我打开输出文件,它会将所有描述背靠背地抛出,并且不清楚表的一个描述从何处开始,在何处结束 因此,我尝试创建一个批处理文件,使用-e单独描述每个表并输出到一个文件: #!/bin/bash nameArr=( $(hive -e 'show tables;') ) c
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 table;
SELECT '-----------------' FROM table;
如果您只对表定义感兴趣,而对其中的数据不感兴趣,那么您可能有幸直接访问元存储。根据您的元存储,您可以直接获取内容(mySQL),或者我听说有一个用于元存储的JavaAPI。