[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