Нужна помощь знатоков shell скриптов и Oracle.

Lisiansky

Люди, необходимо реализовать след. вешь. Есть в оракловской базе табличка - "флаг". Она представляет собой одну запись с одним полем. Нужно написать скрипт, который будет висеть в cron и периодически делать select из этой таблицы и, в зависимости от результата, запускать другой скрипт или нет. Все это нужно для автоматизации выгрузки, которую упомянутый второй скрипт и делает. Может есть отцы, которые посоветуют как это сделать, а то лопатить инет некогда совсем! Заранее премного благодарен! :)

EmaMoscow

Проверить не могу, но вообще должно быть что-то вроде этого:

#!/usr/bin/bash

flag = `echo select flag from flagtable\; | sqlplus -s petya/db1`;

if [ $flag = "1"]
then
/path/to/your/second/script/second_script.sh;
fi

pitrik2

проверил :)

> flag=`echo "select 1 as \"column\" from dual;" | sqlplus -s '
lala/(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL =TCPHOST=lalaPORT=1521CONNECT_DATA=(SID=lala
'`; echo $flag

column ---------- 1

EmaMoscow

Гм, точно. Я думал, что флага -s будет достаточно.
Пришлось лезть в интернет. Оказывается, надо вот так делать:

flag=`sqlplus -s petya/db1 <<EOF
set heading off feedback off verify off
select flag from flagtable;
exit;
EOF
`

Lisiansky

Ну спасибо огромное! Все оказалось гораздо проще чем я думал. Проверить пока не могу, но если что-то будет не так, то обязательно обращусь! Всем плюсики!

EmaMoscow

Вообще, если вдруг понадобится писать более сложные скрипты, советую использовать Perl + DBI.

pitrik2

надо вот так делать
работает :)

> flag=`sqlplus -s '
lala/(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL =TCPHOST=lalaPORT=1521CONNECT_DATA=(SID=lala
' << EOF
> set heading off feedback off verify off
> select 1 as "column" from dual;
> exit;
> EOF
> `; echo $flag

1

Papazyan

Продам прогу на Яве, которая делает селект.
Оставить комментарий
Имя или ник:
Комментарий: