2012-07-17 154 views
2

我正在將一些shell腳本轉換爲perl。所有的數據庫訪問都是使用sqlplus完成的。用perl是訪問Oracle數據庫的更好的方法,或者我應該堅持sqlplus。如何從Perl訪問Oracle數據庫?

回答

3

下面是DBI的使用很短的例子:

use DBI; 

$user = 'donny'; 
$password = 'ppp'; 
$dbconnectstring = 'basetest'; 
$dbh = DBI->connect('dbi:Oracle:',$user.'@'.$password,$dbconnectstring); 

此外,請注意您可以訪問sqlplus中 - 或任何命令行 - 在Perl腳本中。只需使用反引號:

`cd dasd` 

例如,不知道你是否想這樣做,但只是一個想法,因爲你說你正在將shell轉換爲perl。

+0

我得到的錯誤,「install_driver(Oracle)的失敗:無法找到在@INC CAD/Oracle.pm」。我需要安裝BDI包嗎? – Bill 2012-07-17 18:14:02

+0

是的,沒錯。根據您的Perl發行版,你將需要做的CPAN DBD :: Oracle或做...如果你有PPM(不管你做什麼 - 。=你鍵入的命令行,如果是用perl正確地安裝它會開始做給你的東西。 – PinkElephantsOnParade 2012-07-17 18:46:26

7

DBI是標準的Perl數據庫接口(勿庸置疑,它有一個Oracle driver)。 DBIx::Class用一個漂亮的ORM界面包裝它。

SQL Plus中似乎是一個命令行界面到Oracle。要在Perl使用它,你將不得不通過搗碎串在一起(一個偉大的方式來介紹SQL注入的問題)來構建你的查詢,掏出來的命令行客戶端,然後解析文本輸出。這是瘋狂。使用一個接口,使您可以使用Perl數據結構。

+1

如果你想有一個很好的介紹,以連接到Oracle(上已經體面[DBI的POD文檔】的頂部(http://search.cpan.org/perldoc?DBD%3A%3AOracle))下面的文章具有良好開頭的例子:http://www.dba-oracle.com/t_dbi_interface1.htm – DVK 2012-07-17 15:47:28