Piz*_*zra 3 sql unix perl sqlplus
基本上,我想open使用Perl管道到sqlplus,发送查询然后从查询中获取信息.
当前代码:
open(PIPE, '-|', "sqlplus user/password@server_details");
while (<PIPE>) {
print $_;
}
Run Code Online (Sandbox Code Playgroud)
这允许我跳转到sqlplus并运行我的查询.
我弄清楚的是如何让Perl向sqlplus发送查询(因为它始终是相同的查询),一旦完成,我怎样才能将信息写回我的Perl脚本中的变量?
PS - 我知道DBI...但我想知道如何使用上面的方法做到这一点,因为它是不优雅的:)
对代码进行了一些更改,现在我可以将我的查询发送到sqlplus但它已断开连接 ......我不知道如何从中获取结果.
my $squery = "select column from table where rownum <= 10;"
# Open pipe to sqlplus, connect to server...
open(PIPE, '|-', "sqlplus user/password@server_details") or die "I cannot fork: $!";
# Print the query to PIPE?
print PIPE $squery;
Run Code Online (Sandbox Code Playgroud)
是不是STDOUT从sqlplus 抓取然后使用Perl(父)脚本存储它?
基本上,我想将它存储在一个数组中以便稍后进行解析.
流程图:
Perl脚本(父) - >打开管道进入sqlplus(子) - >在管道上打印查询 - > sqlplus在屏幕上输出结果(STDOUT?) - >将STDOUT读入Perl脚本中的数组(父)
编辑:可能是使用此方法将进程分配到sqlplus可能不可行,我将不得不使用DBI.等着看其他人是否回答......