如何通过perl脚本运行sql(.sql文件)

时间:2014-08-29 06:15:18

标签: sql oracle perl shell

嗨我有一个sql文件(test.sql)就像这样简单,

select emp_id from employees 
where country='xxx'
and department='sales'

我知道如何使用shell脚本调用此sql,我们通常使用

#/bin/ksh

sqlplus $login $password test.sql

所以我的shell会调用这个sql并将其假脱机到一个文件中。但是如何使用perl脚本做同样的事情。

我对perl脚本完全陌生,非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

如果没有先编写一个perl脚本,将sql文件的路径作为参数然后执行它,将无法直接执行sql文件。这是一个解释如何做的问题(在perl中):

Execute SQL file in Perl

但是,如果您只想执行sql文件,则可以通过更简单的方法执行此操作。除了使用perl而不是ksh执行此操作之外,您可以随意澄清您要完成的任务 - 我们可以提供更多见解:)。

答案 1 :(得分:0)

在最基本的层面上,您可以调用系统命令,如下所示。

假设您的Oracle环境变量已在用户中设置,并且可以在$ PATH上找到sqlplus

my $login     = "fred";
my $password  = "secretword";
my $sqlfile   = "/path/to/test.sql";

my @sql_array = system("sqlplus $login $password $sqlfile");

我选择将结果存储在一个数组中,以便您可以依次遍历每个元素(行)

foreach my $row ( @sql_array )
{
    print $row;
}

有可能有更好的方法来做到这一点,但在学习Perl时保持基本,我总是发现system()命令是一个好朋友。使用Perl数组是我选择的从系统命令输出读取的方法。

您可能会在数组中找到其他虚假数据(sqlplus,但您可以使用foreach循环中的正则表达式修剪这些数据。