Re: Run external SQL file via Perl dbh

From: Toby Corkindale <toby(dot)corkindale(at)strategicdata(dot)com(dot)au>
To: pgsql-general(at)postgresql(dot)org
Subject: Re: Run external SQL file via Perl dbh
Date: 2012-06-12 02:32:27
Message-ID: 4FD6AA3B.2010109@strategicdata.com.au
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

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

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Greg Williamson 2012-06-12 02:37:56 Re: Run external SQL file via Perl dbh
Previous Message Jeff Davis 2012-06-12 00:57:04 Re: ctid ranges