oracle如何使用java source调用外部程序

作者:mellowsmile 时间:2023-07-12 02:52:42 

需求

Oracle调用第三方外部程序。Oracle使用sqluldr2快速导出大批量数据,然后用winrar压缩后发送邮件。

源码

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();

}

}

}

}

存储过程

create or replace procedure pro_jv_run_extpro(p_cmd varchar2) as

language java name 'jv_run_extpro.run(java.lang.String)';

调用


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;

总结

Java source里StreamGobbler这个类不能少,用于异步读取命令的输出。

标签:oracle,java,source,外部程序
0
投稿

猜你喜欢

  • Ubuntu下设置mysql自动备份

    2010-10-25 20:25:00
  • Python元组常见操作示例

    2023-06-28 20:48:26
  • 利用Vue实现一个markdown编辑器实例代码

    2024-04-30 10:39:19
  • MSSQL经典语句

    2024-01-22 02:59:12
  • Python 函数基础知识汇总

    2021-12-22 15:47:09
  • python 监控logcat关键字功能

    2022-06-13 13:36:17
  • 英文版面设计的8个禁忌

    2009-10-14 20:42:00
  • Python语法垃圾回收机制原理解析

    2021-04-02 13:37:45
  • python实现复制整个目录的方法

    2023-04-08 18:14:47
  • python 插入日期数据到Oracle实例

    2022-09-29 23:51:59
  • 详解python中@的用法

    2022-05-15 04:52:32
  • Python打包模块wheel的使用方法与将python包发布到PyPI的方法详解

    2022-03-26 10:52:57
  • MySQL因大事务导致的Insert慢实例分析

    2024-01-22 22:07:54
  • ThinkPHP视图查询详解

    2024-05-03 15:52:08
  • Tensorflow 使用pb文件保存(恢复)模型计算图和参数实例详解

    2023-12-13 05:42:06
  • Python进阶篇之正则表达式常用语法总结

    2022-03-27 08:45:18
  • 在Docker上开始部署Python应用的教程

    2023-11-13 12:38:37
  • SQL Server中使用Linkserver连接Oracle的方法

    2024-01-23 07:35:00
  • python数据结构之面向对象

    2021-04-09 08:02:06
  • Python XlsxWriter模块Chart类用法实例分析

    2021-05-21 14:02:57
  • asp之家 网络编程 m.aspxhome.com