Perl Interface - Mailing list pgsql-interfaces
From | robert_hiltibidal_at_cms08405@ccmailgw.state.il.us |
---|---|
Subject | Perl Interface |
Date | |
Msg-id | 9906229300.AA930073628@ccmailgw.state.il.us Whole thread Raw |
Responses |
Re: [INTERFACES] Perl Interface
("Ken J. Wright" <ken@ori-ind.com>)
Re: [INTERFACES] Perl Interface (Oleg Bartunov <oleg@sai.msu.su>) |
List | pgsql-interfaces |
Afternoon, Something that's been driving me a little buggy maybe someone Out There can shed some light... We use postgres for user management on linux systems. Nothing fancy about the fields, just username,password,lastname,firstnameetc. Traditionally I've used the shell psql function: @exec = `psql -A -d users-t -q -c "Select * from temp"`; Weeellll now I'm running into server timeouts on the box. The adminmstrationbox does see a fair amount of load. We use sql extensively and consequently we ahve a large number of cronjobs that fire up psql shells. I had thought using the methods found in pg would help. I am planning to portour applications over to C but... that's a several month job. I'm looking for a quick fix here to buy me some time. The other side of that is C is not my preferred language of choice... I do pascal and perl. I am notclear yet as how to navigate multiple rows on the recordset return using the pg method. Ideally I want to put allthe results into an array like this: username|password|lastname marty|next|Robinson mel|foreman|Johnson The <$ret = $result->fetchrow> function only returns a portion of the row. I have created a lttle subroutineusing the getvalue method that iterates thru each row and pushes it into an array. This will work for now.However I am curious, is there another, more simpler method to accomplish this? Thanks, -Rob ############################ # Subroutine # ############################ $query = "Select username,password,knickname,emailaddy,forward,ip,date from temp"; $conn = Pg::connectdb("dbname=$dbname"); $result= $conn->exec($query); $tuples = $result->ntuples; $fields = $result->nfields; $count = 0; while ($count< $tuples ) { $fieldcount = 0; for ($fieldcount = 0;;$fieldcount++) { $entry .= $result->getvalue($count,$fieldcount); if ($fieldcount != $fields) { $entry .= "\|"; } else { last; } } push(@set,$entry); $entry=""; $count++; } for $member (@set) { print "$member\n"; } ########################### When run it produces this output. We need to keep this format for existing scripts. marty|marty|fghu|sdfg@fghj|t|208.130.70.9|Tue Jun 22 00:09:34 1999 CDT marty1|marty|fghu|sdfg@fghj|f|208.130.70.9|TueJun 22 00:10:18 1999 CDT
pgsql-interfaces by date: