[GRASSLIST:4612] Re: String splitting in BASH...

Craig Aumann caumann at ualberta.ca
Fri Oct 22 11:21:31 EDT 2004


Using an index certainly speeds this up, but things are still kind of
slow -
80,000 records takes an hour or two.   

A further speed up was acheived by using:
    echo "update allpoly_att set age = $AGE, cover= $COVER where avicat
= $MYCAT" | db.execute

instead of two separate calls for both "age" and "cover".  

What I would like to do is:

RET = echo "select age, cover from play_att where link_key = $MYCAT" |
db.select -c`

where RET will look something like "100|1002".  I then use BASH to
string split RET and assign to AGE and COVER (both integers).  
This would elliminate one database query and would speed things up
further.    

But I can't figure out how to do this string-splitting in BASH!!

Cheers!
Craig







On Mon, 2004-10-11 at 02:52, Radim Blazek wrote:
> On Thursday 07 October 2004 00:03, Craig Aumann wrote:
> > The code is very simple:
> >
> >
> > for MYCAT in `echo "select distinct avicat from
allpoly_att"|db.select
> > -c`;  do
> >     echo $MYCAT
> >     AGE=`echo "select age from play_att where link_key = $MYCAT" |
> > db.select -c`
> >     COVER=`echo "select cover from play_att where link_key = $MYCAT"
|
> > db.select -c`
> >
> >     echo "update allpoly_att set age = $AGE where avicat = $MYCAT" |
> > db.execute
> >     echo "update allpoly_att set cover = $COVER where avicat =
$MYCAT" |
> > db.execute
> > done
> >
> >
> > Right now, it is doing about 2 updates per second - which is too
slow!
> > Is the slowness caused by piping it through db.execute?
> >
> > Other suggestions for speeding this up?
> 
> Postgres + index for link_key and avicat.
> 
> Radim
> 




More information about the grass-user mailing list