Всем привет, мы снова встретились, я ваш друг Цюаньчжаньцзюнь.
#!/bin/sh
SHELL_NAME=GetTabStript.sh
/bin/rm -f CreateTable.sql
/bin/rm -f tmp.sql
##получатьданныеимя пользователя библиотеки、пароль、Пример,Владелец,Информация о списке имен таблиц; формат выполнения следующий:
##Указанная таблица: sh GetTabStript.sh «dbrwdadm» «dbrwdadm» «chnrwd» «DBRWDADM» «DCUSTMSG SCHNKPI» «CreateTable.sql»
##Все таблицы: sh GetTabStript.sh "dbrwdadm" "dbrwdadm" "chnrwd" "DBRWDADM" "" "CreateTable.sql"
v_dbstr={1}/{2}@
v_ower=${4}
v_tablist=${5}
v_tabscript=${6}
##Подключение к базе данных, создание таблицы запросов, оператор индекса
fExpTab()
{
sqlplus -s ${v_dbstr}
set linesize 2000
set long 99999
set pagesize 0
set feedback off
execute dbms_metadata.set_transform_param(dbms_metadata.session_transform,’STORAGE’,false);
@./${1}
exit
eof
}
## Определить, пуст ли v_tablist, и затем вызвать другие операторы запроса
if [ -n “${v_tablist}” ];
then
##Запросить указанный оператор создания таблицы
for v_tab in $v_tablist
do
v_sqlcon=”
select dbms_metadata.get_ddl(U.OBJECT_TYPE,u.object_name) \”/\”
from USER_OBJECTS U
where USER = upper(‘${v_ower}’)
and U.OBJECT_TYPE IN(‘INDEX’,’TABLE’)
and u.object_name in upper(‘${v_tab}’);”
##Вывод оператора создания таблицы запроса во временный sql-скрипт
echo “${v_sqlcon}”>>tmp.sql
##fExpTab “${v_sqlcon}”>>tabscript.tmp
done
else
##Запрос всех операторов создания таблиц под пользователем
v_sqlall=”
select dbms_metadata.get_ddl(U.OBJECT_TYPE,u.object_name) \” \”
from USER_OBJECTS U
where USER = upper(‘${v_ower}’)
and U.OBJECT_TYPE IN(‘INDEX’,’TABLE’)
order by U.OBJECT_TYPE desc;”
##Вывод оператора создания таблицы запроса во временный sql-скрипт
echo “${v_sqlall}”>>tmp.sql
##fExpTab “${v_sqlall}”>>tabscript.tmp
fi
##Вызов функции базы данных для выполнения временного сценария sql и создания сценария создания временной таблицы
fExpTab “tmp.sql”>>tabscript.tmp
##Чтение и нормализация временных файлов сценариев
##Замените лишние пустые строки во временном скрипте на "/", чтобы сделать его скриптом создания таблицы, который может напрямую вызываться базой данных.
awk -v RS=’\r\n’ ‘gsub(/\n\n\n/,”\n/”)’ tabscript.tmp >>${v_tabscript}
rm -f tabscript.tmp tmp.sql
Заявление об авторских правах: Содержание этой статьи добровольно предоставлено пользователями Интернета, а мнения, выраженные в этой статье, представляют собой только точку зрения автора. Этот сайт предоставляет только услуги по хранению информации, не имеет никаких прав собственности и не принимает на себя соответствующие юридические обязательства. Если вы обнаружите на этом сайте какое-либо подозрительное нарушение авторских прав/незаконный контент, отправьте электронное письмо, чтобы сообщить. После проверки этот сайт будет немедленно удален.