Sql server 如何将命令传递给sqsh并一次性将输出传递到文件?
我试图在bash中设置一个简单的循环来定期查询数据库表。通常情况下,我似乎必须:Sql server 如何将命令传递给sqsh并一次性将输出传递到文件?,sql-server,database,bcp,sqsh,Sql Server,Database,Bcp,Sqsh,我试图在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 我试图使用sqsh的-C选项传入如下命令: sqsh -s SERV -U user -P passwd -D db -L
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
我试图使用sqsh的-C
选项传入如下命令:
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
嗯,马丁