嗨我有一个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脚本完全陌生,非常感谢任何帮助。
答案 0 :(得分:0)
如果没有先编写一个perl脚本,将sql文件的路径作为参数然后执行它,将无法直接执行sql文件。这是一个解释如何做的问题(在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循环中的正则表达式修剪这些数据。