【发布时间】:2012-08-18 19:43:11
【问题描述】:
我需要使用 Perl DBI 对 Oracle 数据库执行 SQL 文件。通过快速搜索,我找到了一些逐行执行 SQL 文件的解决方案,但我想像在 SQL Developer 中一样加载整个 SQL 文件。
在 SQL Dveloper 或 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
【问题讨论】:
-
您不能使用 DBI 一次执行多个 SQL 语句。你为什么不想一行一行地做呢?如果 SQL*Plus 能满足您的需求,您为什么不使用它呢?
-
您知道 SQL Developer 和 SQL*Plus 也一次只执行一条语句吗?无论您使用何种工具,都无法一次性完成完整的脚本
-
@Borodin:这个问题可能意味着是否可以使用 DBI 将文件批量加载到数据库中。
-
您可以拥有一个look at this,它允许逐行处理每一行。
-
我不确定DBI::Shell 是否有帮助。它有一个“加载”命令来读取准备执行它的文件的内容,但我不知道它是否将该文件的内容拆分为单独执行的单独的可执行语句。