写一个shell脚本执行sql语句

wgh770513146 2011-10-27 12:08:18
写一个shell脚本执行insert into tt(id,name) select id,name from yy语句
test.sh

#!/bin/bash
sqlplus -s 'cisf/cisf23@cisfkfdb'<<EOF
set feed off
set heading off;
set feedback off;
set verify off;
insert into tt(id,name) select id,name from yy;
EOF

没写过shell脚本,大家帮我看看!
...全文
5457 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
IT职场成长课 2011-10-28
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 opps_zhou 的回复:]
select owner, table_name from dba_all_tables
where table_name = 'T_LX_TRANS_DATE_AFIER_CLOSED'
or table_name = 'T_SEC_MKT_DATA';

看下这两张表的 owner 是谁
然后用表所属用户登陆数据库

grant insert on T_LX_TRANS_……
[/Quote]+1
opps_zhou 2011-10-28
  • 打赏
  • 举报
回复
select owner, table_name from dba_all_tables
where table_name = 'T_LX_TRANS_DATE_AFIER_CLOSED'
or table_name = 'T_SEC_MKT_DATA';

看下这两张表的 owner 是谁
然后用表所属用户登陆数据库

grant insert on T_LX_TRANS_DATE_AFIER_CLOSED to cisf;
grant select on T_SEC_MKT_DATA to cisf;
yinan9 2011-10-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 opps_zhou 的回复:]
没什么大问题,就是在 EOF 之前,加一个 commit;
[/Quote]Up,学习下
opps_zhou 2011-10-27
  • 打赏
  • 举报
回复
没什么大问题,就是在 EOF 之前,加一个 commit;
NLP爱好者 2011-10-27
  • 打赏
  • 举报
回复
请楼主检查
用户名和密码cisf/cisf23登陆数据库后,是否可以查询下面两张表:
T_LX_TRANS_DATE_AFIER_CLOSED
T_SEC_MKT_DATA

1、很有可能这两张表不是在cisf用户下面。
jcback 2011-10-27
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wgh770513146 的回复:]

引用 6 楼 opps_zhou 的回复:
/bin/ls -l /proc/$$/exe
看一下你当前用户是 csh 还是 bash

恩 这个已经解决好了,但遇到一个很奇怪的问题:
xmkf_B54_/home/cisf/cisfkf/lx $./test.sh
insert into T_LX_TRANS_DATE_AFIER_CLOSED(tx5_sequence.nextv……
[/Quote]
grant下
wgh770513146 2011-10-27
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 opps_zhou 的回复:]
/bin/ls -l /proc/$$/exe
看一下你当前用户是 csh 还是 bash
[/Quote]
恩 这个已经解决好了,但遇到一个很奇怪的问题:
xmkf_B54_/home/cisf/cisfkf/lx $./test.sh
insert into T_LX_TRANS_DATE_AFIER_CLOSED(tx5_sequence.nextval,MARKET_CD,SEC_CODE, OPENED_PRICE, HIGHEST_PRICE,LOWEST_PRICE,CLOSED_PRICE,MATCH_QTY,MATCH_QMT) select MARKET,SEC_CODE,OPEN_PRICE,HIGH_PRICE,LOW_PRICE,CLOSE_PRICE,MATCH_QTY,MATCH_AMT from T_SEC_MKT_DATA
*
ERROR at line 1:
ORA-00942: table or view does not exist
表一定存在,这是怎么回事,是不是没权限操作T_SEC_MKT_DATA这个表?
opps_zhou 2011-10-27
  • 打赏
  • 举报
回复
/bin/ls -l /proc/$$/exe
看一下你当前用户是 csh 还是 bash
wgh770513146 2011-10-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 opps_zhou 的回复:]
chmod +x test.sh
你没有给 test.sh 可执行权限

或者 sh test.sh
[/Quote]
恩 赋权限了

xmkf_B54_/home/cisf/cisfkf/lx $./test.sh
interpreter "/bin/bash" not found
file link resolves to "/usr/bin/bash"
sh: ./test.sh: not found.
xmkf_B54_/home/cisf/cisfkf/lx $ls
conf conf.properties.bak lib run.sh test.sh
conf.properties jms.txt nohup.out startJMS.sh
xmkf_B54_/home/cisf/cisfkf/lx $
xmkf_B54_/home/cisf/cisfkf/lx $
文件没找到?
怎么解决?第一次用脚本 不会啊
opps_zhou 2011-10-27
  • 打赏
  • 举报
回复
chmod +x test.sh
你没有给 test.sh 可执行权限

或者 sh test.sh
wgh770513146 2011-10-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 opps_zhou 的回复:]
没什么大问题,就是在 EOF 之前,加一个 commit;
[/Quote]
test.sh

#!/bin/bash
sqlplus -s 'cisf/cisf23@cisfkfdb'<<EOF
set feed off
set heading off;
set feedback off;
set verify off;
insert into T_LX_TRANS_DATE_AFIER_CLOSED(tx5_sequence.nextval,MARKET_CD,SEC_CODE, OPENED_PRICE, HIGHEST_PRICE,LOWEST_PRICE,CLOSED_PRICE,MATCH_QTY,MATCH_QMT) select MARKET,SEC_CODE,OPEN_PRICE,HIGH_PRICE,LOW_PRICE,CLOSE_PRICE,MATCH_QTY,MATCH_AMT from T_SEC_MKT_DATA;
commit;
exit;
EOF

部署到服务器上 执行时报错了:
xmkf_B54_/home/cisf/cisfkf/lx $
xmkf_B54_/home/cisf/cisfkf/lx $./test.sh
sh: ./test.sh: Execute permission denied.
这是什么意思?

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧