Как извлечь DDL из базы данных и записать каждый DDL в папку в вашем каталоге - PullRequest
0 голосов
/ 04 июня 2019

Как извлечь 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.

Есть идеи или предложения по исправлению моего кода выше?

...