首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Perl DBI执行整个SQL文件,就像在Oracle SQL Developer中一样

使用Perl DBI执行整个SQL文件,就像在Oracle SQL Developer中一样
EN

Stack Overflow用户
提问于 2012-08-23 17:56:43
回答 2查看 2.8K关注 0票数 1

我需要使用Perl DBI对Oracle数据库执行SQL文件。通过快速搜索,我发现了一些逐行执行SQL文件的解决方案,但我希望像在SQL Developer中那样加载整个SQL文件。

在SQL开发工具或SQL*Plus命令行中,我可以执行;

代码语言:javascript
复制
@/path/to/file.sql;

如果我在Perl中执行此语句,如下所示

代码语言:javascript
复制
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

EN

回答 2

Stack Overflow用户

发布于 2012-08-24 00:16:35

sqlplus在处理文件时,会在读取行尾的分号(';')或行正斜杠('/')时执行SQL语句。如果您希望使用perl和DBI来处理它,则必须以相同的方式拆分这两个语句,并一次执行一条语句,在执行之前去掉'/‘和';’。请记住,'execute some_stored_procedure()‘是一个sqlplus语句,而不是SQL语句,在DBI中执行之前必须将其展开(请参阅DBD::Oracle)。

而且,如果你这样做,你将不需要准备()和执行(),你只需要do()。

票数 1
EN

Stack Overflow用户

发布于 2014-08-16 08:15:17

这个问题可能意味着是否可以使用DBI将文件批量加载到数据库中。

有可能吗?我尝试做以下几件事:

代码语言:javascript
复制
use DBI;
my $dbh = DBI-> connect('dbi:ODBC:test','test','test');
my $sql="@\test.sql";
$dbh->do($sql);

我在当前目录中有test.sql,只有一条简单的sql语句。

我需要一个新的odbc测试驱动程序,并将其应用到一些测试框架中。谢谢。

票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12089134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档