Shell批量獲取hive庫中的建表語句

2021-08-18 04:54:40 字數 1328 閱讀 4347

這裡採用shell的方法在hive庫裡面迴圈執行"show create table「獲取其對應的建表語句;兩個指令碼,分別是兩種方式,乙個是"show tables"後將表列表生成檔案,然後根據讀取檔案進行建表語句的查詢;而第二種是在for條件中直接獲取表的列表清單,然後查詢建表語句;很明顯,後一種方式簡單明瞭

1、第一種方式

/home/hadoop/nisj/xx/yao/hivetabmetabak1.sh

[hadoop@emr-worker-9 yao]$ cat hivetabmetabak1.sh 

#!/bin/bash

hive -e "show tables 'rcd*';" > tables.txt

rm -rf tablesddl.txt

sleep 2

cat tables.txt |while read eachline

dohive -e "show create table $eachline" >>tablesddl.txt

echo -e "---------------------------- $eachline table structure generate finished! -------------------------------\n\n">>tablesddl.txt

done

[hadoop@emr-worker-9 yao]$

2、第二種方式

/home/hadoop/nisj/xx/yao/hivetabmetabak2.sh

[hadoop@emr-worker-9 yao]$ cat hivetabmetabak2.sh  

#!/bin/bash

rm -rf tablesddl.txt

for hivetabname in $(hive -e "show tables 'rcd*';")

dohive -e "show create table $hivetabname" >>tablesddl.txt

echo -e "---------------------------- $hivetabname table structure generate finished! -------------------------------\n\n">>tablesddl.txt

done

[hadoop@emr-worker-9 yao]$

其實,可以將指令碼放在任意的檔案目錄下也可。

shell指令碼的方式批量匯出hive建表語句

最近遇到的乙個工作任務。由於公司集群不支援使用hive命令,只能使用beeline命令。通過beeline e 或 beeline f 匯出的結果,會包含一些其他多餘的資訊,不好過濾。同時beeline e 只能跟一條sql語句。於是使用spark sql來完成指令碼編寫。第一版spark sql ...

Shell中獲取引數

如果只需要傳入引數,基本上可以使用 n來取引數,注意n是從1開始的整數 0 指向的是指令碼的名字 cat myscript bin bash echo first arg 1 echo second arg 2 myscript hello world first arg hello second ...

使用模板列獲取批量獲取DataGrid中的資料

使用模板列獲取批量獲取datagrid中的資料 在資料的管理中常常需要批量地獲取資料或者對資料進行更新刪除。使用datagrid控制項的模板列可以方便地實現這一目的。以下是我寫的乙個批量在分頁的datagrid中獲取 中資料的簡單實現思想。test.aspx test.aspx.cs private...