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@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general