sql-server - 我如何将命令传递给 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 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,马丁

关于sql-server - 我如何将命令传递给 sqsh 并一次性将输出输出到文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21439380/

相关文章:

sql-server - 在 T-SQL 中创建新索引时需要重新索引吗?

sql-server - access 2007中如何使用vba刷新表列表

python - 从 SQL 表中获取值以及 Python 中的列表形式的列名

java - 如何将一组 java 对象表示为数据库中其他对象的字段?

javascript - 按升序/降序排列数据 - 使用 js 或 db 查询?

mysql - ebean中的复杂查询连接

java - 使用 Runtime.exec() 未完全执行 BAT 文件

sql-server - 使用格式文件(固定宽度)批量插入 - 遇到意外的文件结尾

sql - 如何从 union 语句中删除重复行

.net - 在客户端计算机上安装 BCP 而不安装 SQL Server?