给定一个包含一堆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
...
查询已经简化,实际上非常复杂。
如何获取运行此脚本时执行的实际语句?
非常感谢你的帮助。
答案 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
<<
之后的连字符允许您缩进此处的文档,但仅限于实际制表符。转换为空格的选项卡(由某些编辑器自动完成)将无效。