我正在使用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手册页并在任何地方搜索,但我找不到办法。
答案 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 ...