Захватить SQL выполняется в сценарии оболочки - PullRequest
1 голос
/ 12 октября 2009

Имеется ли сценарий оболочки, содержащий несколько операторов SQL, есть ли возможность перенаправить только операторы SQL в стандартный вывод / файл?

Структура скрипта выглядит примерно так:

...

for i in *list*  
do  
  isql *credentials etc* <<EOF > a.out  
  select *about 100 cols*  
from $i + "_TAB"  
go  
EOF  
done 

...

Запрос был упрощен и довольно сложен в реальности.

Как я могу получить фактические операторы, которые выполняются при запуске этого скрипта?

Очень ценю вашу помощь.

Ответы [ 2 ]

1 голос
/ 12 октября 2009

Используйте переменную для хранения документа здесь, затем вы можете повторить его.

for i in *list*  
do  
    read -r -d '' select <<-EOF
        select *about 100 cols*  
        from $i + "_TAB"  
        go  
        EOF  
    isql *credentials etc* <<< "$select"
    echo "$select" > a.out
done

Дефис после << позволяет сделать отступ здесь, но только с реальными вкладками. Вкладки, преобразованные в пробелы, как это делается автоматически некоторыми редакторами, работать не будут.

1 голос
/ 12 октября 2009

Опция -e (и часто с -n) отобразит входной документ Sybase для isql , хотя вы также получите вывод. Если вы не хотите выводить - выбирает и т. Д., Вам нужно написать функцию isql, которая выведет командную строку в один файл и запустит isql в другой. (проще в perl или python)

...