如何从数据库中提取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。
有什么想法或建议来纠正我上面的代码吗?
暂无答案!
目前还没有任何答案,快来回答吧!