Try something along the lines of this (assumes SQL statements are terminated by semicolon+newline)
...
open( SQL, 'somefile') or die $!;
my @statements = split(/;\n/,join('',<SQL>));
for my $stmt( @statements ){
$dbh->do($_);
}
| [reply] [d/l] |
What you're showing us is not what is running. Could you show us the code that "could not open a file and do it", and the error that was returned? | [reply] |
#!/usr/bin/perl
use DBI;
$user = "akoleti";
$passwd = "somethingortheother";
$dbh = DBI-> connect("dbi:Oracle:host=172.31.0.87;sid=dola;port=1521", $user, $passwd)
or die "Can't connect to database $DBI::errstr\n";
open( SQL, "gene_enzyme.txt") or die $!;
my @statements = <SQL>;
foreach my $stmt( @statements ){
$dbh->do($_);
}
error
DBD::Oracle::db do failed: ORA-24373: invalid length specified for statement (DB
D ERROR: OCIStmtPrepare) at oracle1.pl line 12, <SQL> line 3118.
| [reply] |
foreach my $stmt( @statements ){
$dbh->do($_); }
There are a couple of things wrong. First, your code is trying to execute the SQL one line at a time. So the first SQL command you are running is:
Create table xyz (
which generates the error you're seeing. jZed's advice on splitting on semi-colons and re-joining should work.
Also, you're naming your variable for the loop but then you are referencing $_, which may or may not work correctly.
perl -e 'split//,q{john hurl, pest caretaker}and(map{print @_[$_]}(joi
+n(q{},map{sprintf(qq{%010u},$_)}(2**2*307*4993,5*101*641*5261,7*59*79
+*36997,13*17*71*45131,3**2*67*89*167*181))=~/\d{2}/g));'
| [reply] [d/l] [select] |
#!/usr/bin/perl
use DBI;
$user = "akoleti";
$passwd = "something";
$dbh = DBI-> connect("dbi:Oracle:host=172.31.0.87;sid=dola;port=1521", $user, $passwd)
or die "Can't connect to database $DBI::errstr\n";
open( SQL, "gene_enzyme.txt") or die $!;
my @statements = <SQL>;
foreach my $stmt( @statements ){
$dbh->do($_);
}
error
DBD::Oracle::db do failed: ORA-24373: invalid length specified for statement (DB
D ERROR: OCIStmtPrepare) at oracle1.pl line 12, <SQL> line 3118.
| [reply] |