免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2260 | 回复: 7
打印 上一主题 下一主题

把select结果放到文件问题,求救 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-26 13:28 |只看该作者 |倒序浏览
15可用积分
我的shell文件demo.sh中的内容:
echo "test........."
sqlplus -s  user/user123@demodb <<!

set echo off;
set heading off;
set serveroutput on
set timing on
set feedback off

select CMD_ID||'='||FILE_NAME  from yw.regular_define where STATUS>0

set feedback on
set heading on
set echo on
exit
!
单独执行select CMD_ID||'='||FILE_NAME  from yw.regular_define where STATUS>0 的结果如下:
10010001=./curruser/beta1.sh
10010002=./curruser/beta2.sh
10010003=./curruser/beta3.sh
10010004=./curruser/beta4.sh

……
可执行这个demo.sh什么也没显示,
我想把select的结果写入到一个文件比如tmpfile_result中,该怎么写,谢谢

最佳答案

查看完整内容

echo "test........."sqlplus -s user/user123@demodb

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
2 [报告]
发表于 2008-08-26 13:28 |只看该作者
echo "test........."
sqlplus -s  user/user123@demodb <<!

set echo off;
set heading off;
set serveroutput on;
set timing on;
set feedback off;

spool $PWD/tmpfile_result;
select CMD_ID||'='||FILE_NAME  from yw.regular_define where STATUS>0;
spool off;

exit;
!

命令后面都加上;,文件tmpfile_result前面加上路径再试试。

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
3 [报告]
发表于 2008-08-26 13:33 |只看该作者
这应该属于Oracle的问题。google oracle + spool

echo "test........."
sqlplus -s  user/user123@demodb <<!

set echo off;
set heading off;
set serveroutput on
set timing on
set feedback off

spool tmpfile_result
select CMD_ID||'='||FILE_NAME  from yw.regular_define where STATUS>0
spool off

set feedback on
set heading on
set echo on
exit
!

论坛徽章:
0
4 [报告]
发表于 2008-08-26 13:50 |只看该作者
原帖由 ly5066113 于 2008-8-26 13:33 发表
这应该属于Oracle的问题。google oracle + spool

echo "test........."
sqlplus -s  user/user123@demodb  

谢谢,但是执行后出现下面问题:
/data/user/userbeta-> ./demo.sh
test.........
/data/aiocs/monitor/mainproc/server/shell-> vi tmpfile_result
"tmpfile_result"[新文件]
~
~
~
只有这些信息,并没有产生文件tmpfile_result

另外,我在sqlplus下执行select CMD_ID||'='||FILE_NAME  from yw.regular_define where STATUS>0只显示:
SQL> select CMD_ID||'='||FILE_NAME  from yw.regular_define where STATUS>0
  2  
SQL>
(执行后光标停在2后,只有再回车一次才出现SQL> )
而在PL/SQL中就显示:
10010001=./curruser/beta1.sh
10010002=./curruser/beta2.sh
10010003=./curruser/beta3.sh
10010004=./curruser/beta4.sh

……

论坛徽章:
0
5 [报告]
发表于 2008-08-26 13:52 |只看该作者
补充:
sqlplus下执行的屏幕信息:
Enter user-name: user@demodb
Enter password:

Connected to:
Oracle9i Enterprise Edition Release 9.2.0.4.0 - 64bit Production
With the Partitioning option
JServer Release 9.2.0.4.0 - Production

SQL>select CMD_ID||'='||FILE_NAME  from yw.regular_define where STATUS>0
2  
SQL>

论坛徽章:
0
6 [报告]
发表于 2008-08-26 14:39 |只看该作者
继续求救中……

论坛徽章:
0
7 [报告]
发表于 2008-08-26 15:05 |只看该作者
SQL> select CMD_ID||'='||FILE_NAME  from yw.regular_define where STATUS>0
  2  
SQL>

sql语句没有分号
select CMD_ID||'='||FILE_NAME  from yw.regular_define where STATUS>0

这样写试试

论坛徽章:
0
8 [报告]
发表于 2008-08-26 16:38 |只看该作者
原帖由 gnehz 于 2008-8-26 15:05 发表
SQL> select CMD_ID||'='||FILE_NAME  from yw.regular_define where STATUS>0
  2  
SQL>

sql语句没有分号
select CMD_ID||'='||FILE_NAME  from yw.regular_define where STATUS>0;

这样写试试

多谢,加了分号确实可以输出到文件里了,只是,还有个问题:
输出到文件中时,有空行shell脚本demo.sh如下:
echo "test........."
sqlplus -s  user/user123@demodb <<!

set echo off;
set heading off;
set serveroutput on
set timing off
set feedback off
set veryfy off

--echo '[SHELL_LIST]' > tmpfile_result.cfg

spool tmpfile_result.cfg
select CMD_ID||'='||FILE_NAME  from yw.regular_define where STATUS>0;

spool off

set feedback on
set heading on
set echo on
exit
!
输出结果:

10010001=./curruser/beta1.sh
10010002=./curruser/beta2.sh
10010003=./curruser/beta3.sh
10010004=./curruser/beta4.sh                                    
1001=./curruser/beta.sh                                                            

1002=./curruser/test.sh                                                              
文件中有2个空行
我想在结果文件中的第一行是:
[SHELL_LIST]
最后文件格式为:
[SHELL_LIST]
10010001=./curruser/beta1.sh
10010002=./curruser/beta2.sh
10010003=./curruser/beta3.sh
10010004=./curruser/beta4.sh                                    
1001=./curruser/beta.sh                                                            
1002=./curruser/test.sh   
不知道该怎么修改,十分感谢各位大大
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP