我需要使用Perl DBI对Oracle数据库执行SQL文件。通过快速搜索,我发现了一些逐行执行SQL文件的解决方案,但我希望像在SQL Developer中那样加载整个SQL文件。
在SQL开发工具或SQL*Plus命令行中,我可以执行;
@/path/to/file.sql;如果我在Perl中执行此语句,如下所示
my $query = "@/path/to/file.sql";
my $sth = $dbh->prepare($query)
or die "Couldn't prepare query: ". $dbh->errstr;
$sth->execute();我得到了错误:ORA-00900: Invalid statement
发布于 2012-08-24 00:16:35
sqlplus在处理文件时,会在读取行尾的分号(';')或行正斜杠('/')时执行SQL语句。如果您希望使用perl和DBI来处理它,则必须以相同的方式拆分这两个语句,并一次执行一条语句,在执行之前去掉'/‘和';’。请记住,'execute some_stored_procedure()‘是一个sqlplus语句,而不是SQL语句,在DBI中执行之前必须将其展开(请参阅DBD::Oracle)。
而且,如果你这样做,你将不需要准备()和执行(),你只需要do()。
发布于 2014-08-16 08:15:17
这个问题可能意味着是否可以使用DBI将文件批量加载到数据库中。
有可能吗?我尝试做以下几件事:
use DBI;
my $dbh = DBI-> connect('dbi:ODBC:test','test','test');
my $sql="@\test.sql";
$dbh->do($sql);我在当前目录中有test.sql,只有一条简单的sql语句。
我需要一个新的odbc测试驱动程序,并将其应用到一些测试框架中。谢谢。
https://stackoverflow.com/questions/12089134
复制相似问题