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..