On 10/06/12 08:29, David Williams wrote:

Hi There,

I'd like to be able to run the contents of an external SQL file from Perl.  
Something akin to:

     $dbh->do( '\i /home/david/run_me.sql' );

However this fails, and I assume that is because the \i is a client command. Is 
there a way to run the contents of an external SQL from a Per database handle?

How about something like

use File::Slurp;
use Try::Tiny;

try {
  $dbh->being_work;
  $dbh->do($_) for split(/;/, read_file('run_me.sql'))
  $dbh->commit;
}
catch {
  say "Failed SQL: $_";
  $dbh->rollback;
};


That will break if you have any semi-colons inside quoted strings, but you could improve the splitting to cope with that..

--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

Reply via email to