批量匯出hive表結構 生成建表語句

2021-10-04 12:33:34 字數 1370 閱讀 6462

說明

最近在做集群資料遷移,需要把hive所有的表同步至新的集群。

指令碼

#! /bin/bash

mkdir -p /opt/hive/tables/tablesddl

hive -e "show databases;"

> /opt/hive/databases.txt

echo

"cat database"

cat /opt/hive/databases.txt

cat /opt/hive/databases.txt |

while

read database

doecho

"use $;"

>>/opt/hive/tables/tablesddl/$_tablesddl.txt

sed -i "1 i\create database if not exists $;" /opt/hive/tables/tablesddl/$_tablesddl.txt

hive -e "use $database; show tables;"

> /opt/hive/tables/$_tables.txt

cat /opt/hive/tables/$_tables.txt |

while

read table

doecho

"$table"

hive -e "use $database; show create table $table"

>> /opt/hive/tables/tablesddl/$_tablesddl.txt

echo

";">> /opt/hive/tables/tablesddl/$_tablesddl.txt

done

sed -i 's/create table/create table if not exists/g' /opt/hive/tables/tablesddl/$_tablesddl.txt

done

然後通過hive 執行 /opt/hive/tables/tablesddl/$_tablesddl.txt 這個檔案就可以了,每個檔案代表 乙個庫裡面所有的表。

ls  /opt/hive/

tables

/tablesddl/

*.txt |

while

read line

do# hive -f $line #這種方式如果中間建表錯誤,就會中斷,導致後面的表不能建立

beeline -u jdbc:hive2: -n data -p az -f $line --force=true

done

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

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

hive新集群批量建表

工作中,遇到hive集群搬遷,從a集群,遷到b集群,相應的資料表也要隨之遷移,但hive表一般都比較多,下面實現批量處理方式 1.獲得待搬遷的資料表清單table list.txt。hive e use zx zz show tables table list.txt2.處理建表語句。執行命令,在每...

hive建庫建表與資料匯入匯出

hive建表 hive分內部表與外部表,建立內部表時,會將資料移動到資料倉儲指向的路徑 若建立外部表,僅記錄資料所在的路徑,不對資料的位置做任何改變。在刪除表的時候,內部表的元資料和資料會被一起刪除,而外部表只刪除元資料,不刪除資料。這樣外部表相對來說更加安全些,資料組織也更加靈活,方便共享源資料。...