我有一個本地運行的oracle瘦客戶端,並已成功創建一個ruby腳本來連接到遠程oracle數據庫。我成功地撥打電話(選擇TABLE_NAME *)到數據庫中得到一個表的內容:執行一個sql腳本vi一個OCI8連接對象
begin
con = OCI8.new('<user>', <password>, '<host>:<port>/XE')
con.exec('select name from actor') do |records|
puts records
end
rescue OCIError
puts "Database Connection Error"
end
我也想運行駐留在遠程主機上的Oracle目錄中的SQL腳本。 通常我執行以下操作:
su - oracle
sqlplus <user>/<password>
<SQL> @<script_name>
,這將運行腳本
在Ruby腳本我嘗試以下方法:
con.exec('@<script_name>')
不過,我得到以下錯誤:
stmt.c:230:in oci8lib_200.bundle: ORA-00900: invalid SQL statement (OCIError)
謝謝@Albert。與此同時,我改變了連接到我的實例的寶石。現在我正在使用net-ssh ruby gem。並運行以下命令:ssh.exec!(「su - oracle -c'sqlplus/'<< EOF \ n#{} \ nEOF \ n」) –
roland