我试图建立一个简单的循环来定期查询bash中的数据库表。通常我似乎必须这样做:
sqsh -s SERV -U user -P passwd -D db -L bcp_colsep=','
然后在sqsh中,我必须输入:
select * from some_table where foo=bar
\go -m bcp > /path/to/output.out
我试图将
-C
选项用于sqsh以传递如下命令:sqsh -s SERV -U user -P passwd -D db -L bcp_colsep=',' -C 'select * from some_table where foo=bar \go -m bcp > /path/to/output.out'
但我不断得到:
Incorrect syntax near '\'.
如何获得理想的效果?
最佳答案
使用-C选项将SQL语句传递给sqsh时,将隐式执行\ go命令。要以'bcp'结果样式获取输出,您需要使用-L参数设置变量'style = bcp'或将-mbcp用作命令行参数,然后将输出重定向到文件,或使用sqsh -o参数指定用于输出的文件名。因此,基本上您的命令如下所示:
sqsh -S SERV -U user -P passwd -D db -L bcp_colsep=',' -m bcp \
-C 'select * from some_table where foo=bar' > /path/to/output.out
HTH,马丁