bash—如何从数据库中提取ddl并将每个ddl写入目录中的一个位置

kmb7vmvb  于 2021-06-24  发布在  Hive
关注(0)|答案(0)|浏览(230)

如何从数据库中提取ddl,并将每个ddl作为自己的文件写入目录中的一个位置。自动地,每个ddl都应该被写为[table\u name].sql。
例如:
输入:数据库中的所有表
输出文件:table1.sql、table2.sql等。所有单独的文件都位于我的目录中的一个位置。
这是我的密码:


# !/bin/bash

hiveDBName=abc_db;

showcreate="show create table "
showpartitions="show partitions "
terminate=";"

tables=`hive -e "use $hiveDBName;show tables;"`
tab_list=`echo "${tables}"`

 rm -f ${hiveDBName}_all_table_partition_DDL.txt

for list in $tab_list
do
   showcreatetable=${showcreatetable}${showcreate}${list}${terminate}
   listpartitions= `hive -e "use $hiveDBName; ${showpartitions}${list}"` 

   for tablepart in $listpartitions
   do
      partname=`echo ${tablepart/=/=\"}`
      echo $partname
      echo "ALTER TABLE $list ADD PARTITION ($partname\");" >> ${hiveDBName}_all_table_partition_DDL.txt
   done

done

echo " ====== Create Tables ======= : " $showcreatetable

## Remove the file

rm -f ${hiveDBName}_extract_all_tables.txt

hive -e "use $hiveDBName; ${showcreatetable}" >> ${hiveDBName}_extract_all_tables.txt

问题是,每当我运行它时,它都会将所有创建的ddl放在一个文件中。我希望每个ddl都是自己的文件,其表名为文件名:[table name].sql。
有什么想法或建议来纠正我上面的代码吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题