2014-08-29 147 views
0

嗨,我有一个SQL文件(TEST.SQL)的东西一样简单一个SQL(.sql文件),如何运行通过perl脚本

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

我知道如何使用shell脚本调用这个SQL ,我们通常使用

#/bin/ksh 

sqlplus $login $password test.sql 

所以我的shell会调用这个sql,并且我把它放到一个文件中。但是如何使用perl脚本来做同样的事情。

我完全陌生的Perl脚本和任何帮助非常感谢。

回答

0

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

Execute SQL file in Perl

不过,如果你只是想执行的SQL文件有更容易的方式来做到这一点。随意澄清你正在尝试完成的任务,而不是用perl而不是ksh执行 - 我们可能会提供更多的见解:)。

0

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

假设你的Oracle环境变量被设置在用户和SQLPLUS可以在$ PATH

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循环中用正则表达式来修剪这些数据。)