BBS.ChinaUnix.net
今日推荐    首页 | 新闻 | Linux | 博客 | 论坛 | 人才 | 培训 | 知识库 | 资料 | 读书 | 手册 | 精华 | 下载 | 沙龙 | 搜索     
  会员: 密码: 免费注册 | 忘记密码 | 会员登录 | 搜索 | 帮助 


关于shell脚本的sql插入问题
首页 » 论坛 » Shell »  
[打印] [订阅] [收藏] [推荐给朋友] [本帖文本页]
  [未解决] 本主题悬赏 可用积分 20  
qwldcl
侠客




UID:202067
注册:2004-11-24
最后登录: 2008-05-13
帖子:25
精华:0

可用积分:14
信誉积分:100
专家积分:0 (本版)

状态:...离线...

[个人空间] [短信] [博客]


顶部
1楼 发表于 2008-5-7 21:23 
这是获取数据并生成csv文件的脚本
getdata
#!/bin/sh
cd /getdata
filename="/getdata/ip.txt"
filename2="/getdata/type.txt"
while read line
do
ip="$line"
while read line2
do
graph=$line2
/usr/bin/ovpmbatch graphtemplate=Agents graph="$graph" SYSTEMNAME=$ip GRAPHTYPE=CSV >$ip,$graph.csv
done <$filename2
done <$filename
/getdata/procCPU.sh   //执行procCPU.sh

procCPU.sh
#!/bin/sh
for i in *.csv
do
ip=$(echo $i|cut -d, -f 1)
temp=$(echo $i|cut -d, -f 2)
type=$(echo $temp|cut -d. -f 1)
if [ "$type" = "CPU Utilization Baseline" ]
then
lastline=$(tail -1  "$i")
date=$(echo $lastline|cut -d, -f 1)
time=$(echo $lastline|cut -d, -f 2)
cpu_ut=$(echo $lastline|cut -d, -f 3)

export ORACLE_BASE=/oracle/app
export ORACLE_SID=hpov
export ORACLE_HOME=/oracle/app/10.0.1
export PATH=$PATH:$ORACLE_HOME/bin
su - oracle -c <<EOF
sqlplus /nolog
connect sim/hpsim@ov_net]sim/hpsim@ov_net
set feedback off;
set pagesize 0;
insert into permon (ip,permondate,cpuper) values ($ip,$date$time,$cpu_ut);
commit;
EOF
fi
done
/getdata/procglobal.sh
procglobal.sh

#!/bin/sh
for i in *.csv
do
ip=$(echo $i|cut -d, -f 1)
temp=$(echo $i|cut -d, -f 2)
type=$(echo $temp|cut -d. -f 1)
if [ "$type" = "Global Details" ]
then
lastline=$(tail -1  "$i")
date=$(echo $lastline|cut -d, -f 1)
time=$(echo $lastline|cut -d, -f 2)
cpu_per=$(echo $lastline|cut -d, -f 3)
run_queue=$(echo $lastline|cut -d, -f 4)
physical_disk=$(echo $lastline|cut -d, -f 5)
disk_io_rate=$(echo $lastline|cut -d, -f 6)
physical_disk_rate=$(echo $lastline|cut -d, -f 7)
memory_pageout_rate=$(echo $lastline|cut -d, -f 8)
memory_utilization=$(echo $lastline|cut -d, -f 9)
swap_utilization=$(echo $lastline|cut -d, -f 10)
peak_filesystem=$(echo $lastline|cut -d, -f 11)
network_in=$(echo $lastline|cut -d, -f 12)
network_out=$(echo $lastline|cut -d, -f 13)
system_call_rate=$(echo $lastline|cut -d, -f 14)
system_mode_cpu=$(echo $lastline|cut -d, -f 15)
user_mode_cpu=$(echo $lastline|cut -d, -f 16)
number_of_users=$(echo $lastline|cut -d, -f 17)
process_creation_rate=$(echo $lastline|cut -d, -f 18)
export ORACLE_BASE=/oracle/app
export ORACLE_SID=hpov
export ORACLE_HOME=/oracle/app/10.0.1
export PATH=$PATH:$ORACLE_HOME/bin
su - oracle -c <<EOF
sqlplus /nolog
connect sim/hpsim@ov_net]sim/hpsim@ov_net
set feedback off;
set pagesize 0;
update permon set
swapper=$swap_utilization,diskper=$physical_disk_rate,diskioper=$disk_io_rate,sparefile=$peak_filesystem,usercpuper=$user_mode_cpu,syscpuper=$system_mode_cpu,memper=$memory_utilization,memcache=$memory_pageout_rate,netrecper=$network_in,netsenper=$network_out,userconnect=$number_of_users where permondate=$date$time and ip=$ip;
fi
done
/getdata/procnetwor.sh


procnetwor.sh
#!/bin/sh
for i in *.csv
do
ip=$(echo $i|cut -d, -f 1)
temp=$(echo $i|cut -d, -f 2)
type=$(echo $temp|cut -d. -f 1)
if [ "$type" = "Network Summary" ]
then
lastline=$(tail -1 "$i")
date=$(echo $lastline|cut -d, -f 1)
time=$(echo $lastline|cut -d, -f 2)
packet_out_rate=$(echo $lastline|cut -d, -f 3)
packet_in_rate=$(echo $lastline|cut -d, -f 4)
network_error_rate=$(echo $lastline|cut -d, -f 5)
export ORACLE_BASE=/oracle/app
export ORACLE_SID=hpov
export ORACLE_HOME=/oracle/app/10.0.1
export PATH=$PATH:$ORACLE_HOME/bin
su - oracle -c <<EOF
sqlplus /nolog
connect sim/hpsim@ov_net]sim/hpsim@ov_net
set feedback off;
set pagesize 0;
update permon set errorbagper=$network_error_rate where permondate=$date$time and ip=$ip;
fi
done
/getdata/procsystem.sh

procsystem.sh
#!/bin/sh
for i in *.csv
do
ip=$(echo $i|cut -d, -f 1)
temp=$(echo $i|cut -d, -f 2)
type=$(echo $temp|cut -d. -f 1)
if [ "$type" = "System Configuration" ]
then
lastline=$(tail -1 "$i")
date=$(echo $lastline|cut -d, -f 1)
time=$(echo $lastline|cut -d, -f 2)
system_id=$(echo $lastline|cut -d, -f 3)
machine=$(echo $lastline|cut -d, -f 4)
machine_model=$(echo $lastline|cut -d, -f 5)
cpu_clock_speed=$(echo $lastline|cut -d, -f 6)
os_name=$(echo $lastline|cut -d, -f 7)
os_version=$(echo $lastline|cut -d, -f 8)
os_release=$(echo $lastline|cut -d, -f 9)
memory_size=$(echo $lastline|cut -d, -f 10)
active_cpus=$(echo $lastline|cut -d, -f 11)
number_of_cpu=$(echo $lastline|cut -d, -f 12)
average_number_of_disk=$(echo $lastline|cut -d, -f 13)
average_number_of_network=$(echo $lastline|cut -d, -f 14)
swap_space_mb=$(echo $lastline|cut -d, -f 15)
gmt_offset=$(echo $lastline|cut -d, -f 16)
export ORACLE_BASE=/oracle/app
export ORACLE_SID=hpov
export ORACLE_HOME=/oracle/app/10.0.1
export PATH=$PATH:$ORACLE_HOME/bin
su - oracle -c <<EOF
sqlplus /nolog
connect sim/hpsim@ov_net]sim/hpsim@ov_net
set feedback off;
set pagesize 0;
update permon set comtype=$machine_model,servertype=$machine_model,comsystemed=$os_name$os_version$os_release,comuserinfo=$machine where permondate=$date$time and ip=$ip;
fi
done
/getdata/profilesystem.sh

procfilesystem.sh

#!/bin/sh
for i in *.csv
do
ip=$(echo $i|cut -d, -f 1)
temp=$(echo $i|cut -d, -f 2)
type=$(echo $temp|cut -d. -f 1)
if [ "$type" = "Filesystem Details" ]
then
lastline=$(tail -8 "$i")
for j in $lastline
do
date=$(echo $j|cut -d, -f 1)
time=$(echo $j|cut -d, -f 2)
directory_name=$(echo $j|cut -d, -f 3)
space_utilization=$(echo $j|cut -d, -f 4)
max_size=$(echo $j|cut -d, -f 5)
space_used=$(echo $j|cut -d, -f 6)
space_reserved=$(echo $j|cut -d, -f 7)
type=$(echo $j|cut -d, -f 8)
device_name=$(echo $j|cut -d, -f 9)
id=$(echo $j|cut -d, -f 10)
inode_utilization=$(echo $j|cut -d, -f 11)
max_inodes=$(echo $j|cut -d, -f 12)
blocksize=$(echo $j|cut -d, -f 13)
fragment_size=$(echo $j|cut -d, -f 14)
export ORACLE_BASE=/oracle/app
export ORACLE_SID=hpov
export ORACLE_HOME=/oracle/app/10.0.1
export PATH=$PATH:$ORACLE_HOME/bin
su - oracle -c <<EOF
sqlplus /nolog
connect sim/hpsim@ov_net]sim/hpsim@ov_net
set feedback off;
set pagesize 0;
update permon set filesyssize=$max_size,useunixinode=$inode_utilization,spareunixinode=$max_inodes where permondate=$date$time and ip=$ip;
done
fi
done
请问什么地方不正确,为什么插入不进去数据库里头

[ 本帖最后由 qwldcl 于 2008-5-7 21:32 编辑 ]



您对本贴的看法:鲜花[0] 臭蛋[0]
IBM 集群技术资源全面接触 |赠送linux之父推荐的经典书 | CU-2008奥运之春摄影赛 | 新版开张:《IT爱车族》分享香车美女
qwldcl
侠客




UID:202067
注册:2004-11-24
最后登录: 2008-05-13
帖子:25
精华:0

可用积分:14
信誉积分:100
专家积分:0 (本版)

状态:...离线...

[个人空间] [短信] [博客]


顶部
2楼 发表于 2008-5-8 00:47 
每人知道或者会写得吗?



您对本贴的看法:鲜花[0] 臭蛋[0]
IBM 集群技术资源全面接触 |赠送linux之父推荐的经典书 | CU-2008奥运之春摄影赛 | 新版开张:《IT爱车族》分享香车美女
li2002
精灵使



UID:6382
注册:2002-4-5
最后登录: 2008-05-11
帖子:2566
精华:10

可用积分:788
信誉积分:100
专家积分:15 (本版)

来自:江苏
状态:...离线...

[个人空间] [短信] [博客]


顶部
3楼 发表于 2008-5-8 06:34 
su - oracle -c <<EOF
...
EOF
怎么看不到EOF?



您对本贴的看法:鲜花[0] 臭蛋[0]
IBM 集群技术资源全面接触 |赠送linux之父推荐的经典书 | CU-2008奥运之春摄影赛 | 新版开张:《IT爱车族》分享香车美女
qwldcl
侠客




UID:202067
注册:2004-11-24
最后登录: 2008-05-13
帖子:25
精华:0

可用积分:14
信誉积分:100
专家积分:0 (本版)

状态:...离线...

[个人空间] [短信] [博客]


顶部
4楼 发表于 2008-5-8 08:36 


QUOTE:
原帖由 li2002 于 2008-5-8 06:34 发表
su - oracle -c  

即使有EOF也执行不了,这个我复制的时候弄错了,事实上是有的



您对本贴的看法:鲜花[0] 臭蛋[0]
IBM 集群技术资源全面接触 |赠送linux之父推荐的经典书 | CU-2008奥运之春摄影赛 | 新版开张:《IT爱车族》分享香车美女
版主 waker   帅哥 (孩儿他爹)
广告杀手-法王



UID:17255
注册:2002-8-26
最后登录: 2008-05-17
帖子:16411
精华:2

可用积分:6688
信誉积分:285
专家积分:112 (本版)

来自:中国南京
状态:...离线...

[个人空间] [短信] [博客]


顶部
5楼 发表于 2008-5-8 08:53 
su - oracle -c <<EOF

请问你 -c的什么?



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

=GNU/linux=
GNU {bash 2.05b, grep 2.5, Awk 3.1.3, sed 4.0.8}
IBM 集群技术资源全面接触 |赠送linux之父推荐的经典书 | CU-2008奥运之春摄影赛 | 新版开张:《IT爱车族》分享香车美女
li2002
精灵使



UID:6382
注册:2002-4-5
最后登录: 2008-05-11
帖子:2566
精华:10

可用积分:788
信誉积分:100
专家积分:15 (本版)

来自:江苏
状态:...离线...

[个人空间] [短信] [博客]


顶部
6楼 发表于 2008-5-8 09:01 
不熟悉oracle,这和你写的sql语句是否正确有关吧,你的表字段都是整形的?怎么都没有字符串,看不到引号
你搞这么多行,把你错误最关键的地方摘出来让大家看,要不然谁也不愿意看一大堆数码字



您对本贴的看法:鲜花[0] 臭蛋[0]
IBM 集群技术资源全面接触 |赠送linux之父推荐的经典书 | CU-2008奥运之春摄影赛 | 新版开张:《IT爱车族》分享香车美女
li2002
精灵使



UID:6382
注册:2002-4-5
最后登录: 2008-05-11
帖子:2566
精华:10

可用积分:788
信誉积分:100
专家积分:15 (本版)

来自:江苏
状态:...离线...

[个人空间] [短信] [博客]


顶部
7楼 发表于 2008-5-8 09:07 
这是我写的一段sybase的sql
isql -Udbo -Ppassword -SSERV <<!
update accu set accu008=accu008+$3 where accu001='$1' and  accu006='$2'
go
!
你应该是这样吧
su - oracle <<EOF
...
EOF

[ 本帖最后由 li2002 于 2008-5-8 09:09 编辑 ]



您对本贴的看法:鲜花[0] 臭蛋[0]
IBM 集群技术资源全面接触 |赠送linux之父推荐的经典书 | CU-2008奥运之春摄影赛 | 新版开张:《IT爱车族》分享香车美女
mcolinc   帅哥
风云使者



UID:552220
注册:2007-4-15
最后登录: 2008-05-16
帖子:512
精华:0

可用积分:595
信誉积分:100
专家积分:0 (本版)

状态:...离线...

[个人空间] [短信] [博客]


顶部
8楼 发表于 2008-5-8 09:07 
这么一大段
实在没有耐心看



您对本贴的看法:鲜花[0] 臭蛋[0]
IBM 集群技术资源全面接触 |赠送linux之父推荐的经典书 | CU-2008奥运之春摄影赛 | 新版开张:《IT爱车族》分享香车美女
qwldcl
侠客




UID:202067
注册:2004-11-24
最后登录: 2008-05-13
帖子:25
精华:0

可用积分:14
信誉积分:100
专家积分:0 (本版)

状态:...离线...

[个人空间] [短信] [博客]


顶部
9楼 发表于 2008-5-8 09:11 


QUOTE:
原帖由 waker 于 2008-5-8 08:53 发表
su - oracle -c  

这些字段在shell中单独执行是可以连接上数据库的!

QUOTE:
不熟悉oracle,这和你写的sql语句是否正确有关吧,你的表字段都是整形的?怎么都没有字符串,看不到引号
你搞这么多行,把你错误最关键的地方摘出来让大家看,要不然谁也不愿意看一大堆数码字

不是阿,都是varchar2类型,我那些字段都是变量还需要加引号吗?
执行没出错,但是就是没有插入数据库。
我的意思是想循环从一个文本中读出内容,然后把内容插入到数据库中,数据库连接是在循环中,循环是在do done之间,我现在担心的是,循环没执行完毕,数据库是不是就不连接了?



您对本贴的看法:鲜花[0] 臭蛋[0]
IBM 集群技术资源全面接触 |赠送linux之父推荐的经典书 | CU-2008奥运之春摄影赛 | 新版开张:《IT爱车族》分享香车美女
li2002
精灵使



UID:6382
注册:2002-4-5
最后登录: 2008-05-11
帖子:2566
精华:10

可用积分:788
信誉积分:100
专家积分:15 (本版)

来自:江苏
状态:...离线...

[个人空间] [短信] [博客]


顶部
10楼 发表于 2008-5-8 09:17 


QUOTE:
原帖由 qwldcl 于 2008-5-8 09:11 发表

这些字段在shell中单独执行是可以连接上数据库的!

不是阿,都是varchar2类型,我那些字段都是变量还需要加引号吗?
执行没出错,但是就是没有插入数据库。
我的意思是想循环从一个文本中读出内容,然后 ...

你直接在sqlplus里写要加引号,那么你在shell中写当然也要有引号



您对本贴的看法:鲜花[0] 臭蛋[0]
IBM 集群技术资源全面接触 |赠送linux之父推荐的经典书 | CU-2008奥运之春摄影赛 | 新版开张:《IT爱车族》分享香车美女

首页 » 论坛 » Shell »


 


Copyright © 2001-2008 ChinaUnix.net All Rights Reserved     联系我们:

感谢所有关心和支持过ChinaUnix的朋友们    转载本站内容请注明原作者名及出处

京ICP证041476号


清除 Cookies - ChinaUnix - Archiver - WAP - TOP

Processed in 0.047886 second(s), 4 queries , Gzip enabled