Sybase query:save 一个输出到一个文件

Sybase query:save an output to a file

我创建了以下脚本:

    #!/bin/bash

    isql -U databasename_dba -P password -b <<EOF!
    select quantity, date from name_table where numer_id="1234" 
    go
    quit
    EOF!

运行脚本我得到了想要的输出,见:

user@system$ ./EXECUTE_DAILY_4:

但是现在,如何将我在终端 window 中看到的结果保存到文件中? (例如.csv)

我将 following 修改为我的 Sybase 查询:

#!/bin/bash
cat > test.sql <<EOF!

isql -U databasename_dba -P password -b
select quantity, date from name_table where numer_id="1234"
go
quit
EOF!
isql test.sql >result.csv

如果没有成功,上面的方法是行不通的。

提前致谢

我用这个(基本解决方案)解决了它:

./EXECUTE_DAILY_4> FILE.csv

我愿意看到更多建议, 谢谢。

几个选项:

isql -U databasename_dba -P password -b <<-EOF > result.csv 2>&1
select quantity, date from name_table where numer_id="1234" 
go
EOF

'> result.csv 2>&1' 表示将标准输出写入文件 'result.csv';还将 stderr (fd=2) 重定向到 stdout (fd=1)(即,还将 stderr 写入文件 'result.csv';从这里您可以使用 'result.csv' 执行您想要的操作(例如,检查错误, parse/process 根据需要的文件等)。

注意:'quit' 是多余的,因为 isql 会话在无事可做时会自动 exit/quit。

如果您想将查询放在 *.sql 文件中:

echo "select quantity, date from name_table where numer_id='1234'" > test.sql
echo "go" >> test.sql

从这里您可以选择提交给 isql:

isql -U databasename_dba -P password -b -i test.sql -o result.csv

or

isql -U databasename_dba -P password -b -i test.sql > result.csv 2>&1

'-i test.sql' 告诉 isql 从文件 'test.sql' 中获取它的输入;第一个示例使用“-o result.csv”将标准输出定向到 'result.csv',而第二个示例将 stdout/stderr 定向到 'result.csv'.

您可以在脚本本身内有效地做同样的事情。类似于:

#!/bin/bash
command=$(
isql -U databasename_dba -P password -b <<EOF!
select quantity, date from name_table where numer_id="1234" 
go
EOF!
)

echo "$command" >> FILE.csv