2014-08-29 119 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循環中用正則表達式來修剪這些數據。)