在这里,我尝试使用 sqlplus 运行普通查询并将结果转储到 CSV 文件中,然后我还有另一项工作要做,我面临的问题是我的脚本在执行 sqlplus 查询后无法继续,它只是查看结果并将输出转储到csv 文件,但它不会继续,我也不知道如何转储数据而不查看结果
#!/bin/bash
cd /dir/test_dir
sqlplus -s test/test <<EOF
set colsep ,
set underline off,
set headsep off,
set feedback off,
set long 99999,
set linesize 32767,
set trimspool on,
spool report(date +%Y-%m-%d).csv
select a.s, a.d, a.t, a.ww, a.tt from test a;
exit;
EOF
cd ../
mkdir test/
.
.
.
答案1
该行EOF
包含前导空格不会终止以 开头的此处文档<<EOF
。使用时EOF
不带前导空格。代替
EOF
你应该使用
EOF
或者通过重定向更改行sqlplus -s test/test <<-EOF
,然后使用制表符缩进。
如果重定向运算符是
<<-
,则所有前导制表符将从输入行和包含定界符的行中去除。这允许 shell 脚本中的此处文档以自然的方式缩进。
(来源)