Как извлечь DDL из базы данных и записать каждый DDL в папку в вашем каталоге КАК СВОЙ ФАЙЛ.Автоматически каждый DDL должен записываться как [имя_таблицы] .sql.
Так, например:
- Ввод: все таблицы в базе данных
- Выходной файл (s): 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
Проблема в том,всякий раз, когда я запускаю это, он помещает все DDLS, созданные в один файл.Я хочу, чтобы каждый DDL представлял собой свой собственный файл с именем таблицы в качестве имени файла: [имя таблицы] .sql.
Есть идеи или предложения по исправлению моего кода выше?