抓取在shell脚本中执行的SQL

时间:2009-10-12 16:31:15

标签: sql unix shell sybase

给定一个包含一堆SQL语句的shell脚本,是否有一个选项可以将SQL语句重定向到stdout / file?

脚本的结构是这样的:

...

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

...

查询已经简化,实际上非常复杂。

如何获取运行此脚本时执行的实际语句?

非常感谢你的帮助。

2 个答案:

答案 0 :(得分:1)

-e(通常带有-n)选项将回显输入Sybase document for isql,尽管您也会获得输出。如果你不想输出 - 选择等你需要编写一个名为isql的函数,它将命令行回显到一个文件并运行isql到另一个文件  (在perl或python中更容易)

答案 1 :(得分:1)

使用变量来保存您的文档,然后您可以回复它。

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

<<之后的连字符允许您缩进此处的文档,但仅限于实际制表符。转换为空格的选项卡(由某些编辑器自动完成)将无效。

相关问题