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
我创建了以下脚本:
#!/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