如何在tsql中运行SQL脚本

时间:2013-06-13 03:46:58

标签: linux tsql freetds

我正在使用tsql(与FreeTDS一起安装),我想知道是否有办法从命令行在tsql中运行SQL脚本并将结果存入文本文件。

例如,在psql中,我可以这样做:

psql -U username -C "COPY 'SELECT * FROM some_table' to 'out.csv' with csv header"

或者:

psql -U username -C "\i script.sql"

在script.sql中执行:

\o out.csv
SELECT * FROM  some_table;

有没有办法在tsql中执行此操作?我已经阅读了linux手册页并在任何地方搜索,但我找不到办法。

4 个答案:

答案 0 :(得分:6)

我想,您可以尝试“bsqldb”,请参阅http://linux.die.net/man/1/bsqldb

答案 1 :(得分:5)

我真的没有找到如何做到这一点,我开始认为它不能在tsql中完成。但是我解决了我重定向stdin和stdout的具体问题。我使用像这样的bash脚本:

tsql connection parameters < tsql_input.sql > tsql_output.csv
lines=`cat tsql_output.csv | wc -l`

# The output includes the header info of tsql and the "(n number of rows)" message
# so I use a combination of head and tail to select the lines I need
headvar=$((lines-2))
tailvar=$((lines-8))

head -$headvar tsql_output.csv | tail -$tailvar tsql_output.csv > new_output_file.csv

这样就可以在'new_output_file.csv'上保存查询结果

答案 2 :(得分:1)

tsql -U username -P password -p 1433 > out.csv <<EOS SELECT * FROM some_table; go EOS

答案 3 :(得分:0)

freebcp "select * from mytable where a=b" queryout sample.csv -U anoop -P mypassword -S hostname.com -D dbname -t , -c

这个命令就像一个魅力。感谢FreeTDS ...