0

我正在使用 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

4 回答 4

6

我想,你可以试试“bsqldb”,见http://linux.die.net/man/1/bsqldb

于 2013-06-13T09:38:55.190 回答
5

我真的没有找到如何做到这一点,我开始认为它不能在 tsql 中完成。但是,我解决了重定向标准输入和标准输出的具体问题。我使用这样的 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”上

于 2013-06-28T18:02:06.503 回答
1
freebcp "select * from mytable where a=b" queryout sample.csv -U anoop -P mypassword -S hostname.com -D dbname -t , -c

这个命令就像一个魅力。向 FreeTDS 致敬……

于 2017-08-18T09:06:52.347 回答
-1
tsql -U username -P password -p 1433 > out.csv <<EOS SELECT * FROM some_table; go EOS
于 2015-03-18T03:24:31.967 回答