+ -
当前位置:首页 → 问答吧 → 怎么实现截取目录下的文件名(xx201105221954.csv'),并获得其分钟数

怎么实现截取目录下的文件名(xx201105221954.csv'),并获得其分钟数

时间:2011-05-11

来源:互联网

有一个需求如下的哟,一个目录下可能有有一个
xx201105221954.csv
我想系统一分钟调一次入数据库 但是对应的ctl文件不一样
规则是0-9的ctl文件 对应csv文件的名字中的分钟数 ,也就是点号之前的那个数字 ~~~

附上我原来的sh代码~~
#!/bin/sh

#dir
CTRLDIR=$HOME/ctrlfile
OUTDIR=$HOME/dbout
CSVDIR=$HOME/bin/csvdata
HISTROYCSV=/data/histroycsv


#DB info
DBUSER=zjnoap
DBPWD=noap
DBNAME=orcl



#into db
cd $CSVDIR

export ORACLE_BASE=/u01/app/base
export ORACLE_HOME=/u01/app/oracle
export ORACLE_SID=orcl
export PATH=$ORACLE_HOME/bin:$PATH

#monitor
find  $PWD  -name "CellTrackKpi*.csv" -mmin +1 |xargs -i -n1 sqlldr userid=$DBUSER/$DBPWD@$DBNAME  control=$CTRLDIR/track.ctl  data={}  DIRECT=TRUE  log=$OUTDIR/track.out
find  $PWD  -name "CellTrackKpi*.csv" -mmin +1 |xargs -i -n1 mv {} $HISTROYCSV



cd ~

不知道怎么修改 ,请大神赐教 ·~~

作者: pengjunhui2012   发布时间: 2011-05-11

就是怎么传递参数到sqlldr命令中 ,control 和data参数

作者: pengjunhui2012   发布时间: 2011-05-11

和你传用户名 密码一样啊

作者: lkk2003rty   发布时间: 2011-05-11

回复 lkk2003rty


    文件名需要做修改的,比入xx201105221954.csv 需要换成xx201105221954.bad
还有一个就是根据分钟数,配套的调 control = 0.ctl 还是1.ctl
呵呵 ~~~

作者: pengjunhui2012   发布时间: 2011-05-11

回复 pengjunhui2012


    你先用date把ctrl文件名算出来 然后用啊

作者: lkk2003rty   发布时间: 2011-05-11

回复 lkk2003rty


    大哥 我是真的不会弄的呀,麻烦你帮我写一下  呵呵~~~~

作者: pengjunhui2012   发布时间: 2011-05-11

  1. super@~$ date +%Y%m%d%H%M
  2. 201105111632
  3. super@~$ a=$(date +%Y%m%d%H%M)
  4. super@~$ echo $a
  5. 201105111632
  6. super@~$
复制代码
回复 pengjunhui2012


    时间可以这么搞  然后你怎么用 你照着改改吧

作者: lkk2003rty   发布时间: 2011-05-11

回复 lkk2003rty


    我的时间是文件名里读出来的呀,可是我不知道怎么去赋值的呀,~~~~~

作者: pengjunhui2012   发布时间: 2011-05-11

  1. super@~$ b=${a:0:4}
  2. super@~$ echo $b
  3. 2011
  4. super@~$ echo $a
  5. 201105111632
  6. super@~$
复制代码
回复 pengjunhui2012


    类似上面这样 ${var:pos:len}

作者: lkk2003rty   发布时间: 2011-05-11

回复 lkk2003rty


    大哥你说的这样的,我都会 ;
麻烦你帮我在代码里补全?
find  $PWD  -name "CellTrackKpi*.csv" -mmin +1 |xargs -i -n1 sqlldr userid=$DBUSER/$DBPWD@$DBNAME  control=$CTRLDIR/track.ctl  data={}  DIRECT=TRUE  log=$OUTDIR/track.out

该目录下的名字假设为CellTrackKpi201105221954.csv   我想要实现control文件调track4.ctl ,log文件名为trck201105221954.out

作者: pengjunhui2012   发布时间: 2011-05-11