2012-02-09 138 views
3

我編寫了一個PL/SQL過程來連接到FTP服務器。我能夠向該FTP服務器寫入文件。使用相同的代碼我試圖連接到SFTP服務器,但它失敗了。我如何使用PL/SQL連接到SFTP?使用Oracle PL/SQL將文件寫入SFTP

+0

不能從PL/SQL執行SFTP,但你可以在Oracle中使用Java 。請參閱[本文](http://dbashavefeelingstoo.wordpress.com/2011/07/22/sftp-with-plsql/)瞭解如何完成該示例。 – 2012-02-09 12:13:36

+0

thx爲您的迴應。 – 2012-02-09 12:32:15

+0

這並非完全正確。您可以通過SSL協議使用['utl_http'](http://docs.oracle.com/cd/B10500_01/appdev.920/a96612/u_http.htm)。它與SFTP不太一樣,但它可能... – Ben 2012-02-09 16:31:03

回答

1

SFTP需要SSH加上執行protocol。就我的PL/SQL知識和谷歌而言,目前在PL/SQL中沒有可用的SSH或此協議的實現。有一些替代方案:

  • 在數據庫中使用Java並打開足夠的端口。不推薦這是在數據庫中使用Java的唯一原因;由於大多數DBA都沒有使用經驗,所以它不像PL/SQL那樣設計良好,而且由DBA維護可能會很昂貴。
  • 使用PL/SQL在數據庫之外啓動作業。例如,在過去,我經常使用Pentaho Data Integration(以前稱爲Kettle),它提供了一個免費的解決方案,將表/過程的數據流繪製到sftp收件人,然後運行它。從PL/SQL運行需要調度程序(我總是使用我們自己的,因爲它也集成了Kettle,但您也可以考慮與Oracle Apps,Redwood JCS/Cronacle或其他集成的調度程序)。在PL/SQL中編碼然後變成:'begin package.submit('SFTP it'); package.wait;結束;'。

我會去第二個選項。如果您需要更多詳細信息,請告訴我。

2

你可以試商用ORA_SFTP包從DidiSoft提供:

connection_id := ORA_SFTP.CONNECT_HOST(... 
ORA_SFTP.UPLOAD(connection_id, data, 'remote_file.dat'); 

聲明:我DidiSoft工作