oracle如何使用java source調(diào)用外部程序
需求
Oracle調(diào)用第三方外部程序。Oracle使用sqluldr2快速導(dǎo)出大批量數(shù)據(jù),然后用winrar壓縮后發(fā)送郵件。
源碼
java source
create or replace and compile java source named jv_run_extpro as import java.io.*; import java.lang.*; import java.util.*; import java.sql.*; import oracle.sql.*; publicclass jv_run_extpro { publicstaticvoid run(String cmd) throws IOException { Process p=Runtime.getRuntime().exec(cmd); StreamGobbler errorGobbler = new StreamGobbler(p.getErrorStream(), "Error"); StreamGobbler outputGobbler = new StreamGobbler(p.getInputStream(), "Output"); errorGobbler.start(); outputGobbler.start(); try { p.waitFor(); } catch(InterruptedException ie) { System.out.println(ie); } } publicstaticclass StreamGobbler extends Thread { InputStream is; String type; public StreamGobbler(InputStream is, String type) { this.is = is; this.type = type; } publicvoid run() { try { InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); String line = null; while ((line = br.readLine()) != null) { if (type.equals("Error")) { System.out.println("Error :" + line); } else { System.out.println("Debug:" + line); } } } catch (IOException ioe) { ioe.printStackTrace(); } } } }
存儲(chǔ)過程
create or replace procedure pro_jv_run_extpro(p_cmd varchar2) as
language java name 'jv_run_extpro.run(java.lang.String)';
調(diào)用
begin pro_jv_run_extpro('sqluldr264.exe scott/hh@pdborcl query="select * from emp" field=, head=yes file=D:\Desktop\tmp\sqluldr2\OUT2.TXT'); pro_jv_run_extpro('"D:\Program Files\WinRAR\Rar.exe" a -ep -df "D:\Desktop\tmp\sqluldr2\20160916.rar" "D:\Desktop\tmp\sqluldr2\OUT2.TXT"'); end;
總結(jié)
Java source里StreamGobbler這個(gè)類不能少,用于異步讀取命令的輸出。
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Oracle SQLPlus導(dǎo)出數(shù)據(jù)到csv文件的方法
這篇文章主要介紹了Oracle SQLPlus導(dǎo)出數(shù)據(jù)到csv文件,需要的朋友可以參考下2020-05-05oracle 11g的警告日志和監(jiān)聽日志的刪除方法
這篇文章主要介紹了oracle 11g的警告日志和監(jiān)聽日志的刪除方法,需要的朋友可以參考下2014-07-07WMware redhat 5 oracle 11g 安裝方法
本文將詳細(xì)介紹WMware中redhat 5 安裝oracle 11g方法,需要的朋友可以參考下2012-12-12oracle定時(shí)任務(wù)定時(shí)無效的原因分析與解決
發(fā)現(xiàn)系統(tǒng)數(shù)據(jù)沒有更新,查看oracle定時(shí)任務(wù),估計(jì)沒有執(zhí)行,下面這篇文章主要給大家介紹了關(guān)于oracle定時(shí)任務(wù)定時(shí)無效的原因分析與解決方法,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06oracle連接ODBC sqlserver數(shù)據(jù)源的詳細(xì)步驟
這篇文章主要介紹了oracle連接sqlserver數(shù)據(jù)源ODBC的詳細(xì)步驟,本文分步驟給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-07-07Oracle中執(zhí)行動(dòng)態(tài)SQL
這篇文章介紹了Oracle中執(zhí)行動(dòng)態(tài)SQL的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05Oracle往某表批量插入記錄的幾種實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于Oracle往某表批量插入記錄的幾種實(shí)現(xiàn)方法,Oracle批量插入語句與其他數(shù)據(jù)庫不同,文中通過代碼實(shí)例介紹的非常詳細(xì),需要的朋友可以參考下2023-07-07