oracle 数据抽取 java_你能从Oracle数据库中提取一个pl / java类文件吗?

我最近自己必须这样做,并整理一个Groovy脚本来完成它。您需要修改连接详细信息并确保在类路径上有Oracle数据库驱动程序

import groovy.sql.Sql

// Change the following to your requirements ...

def extractRoot = "extracted-classes/" // Directory to extract classes into

def user = 'SCOTT' // Schema user

def password = 'tiger' // Yes, it's the password

def host = 'localhost' // Database host

def sid = 'orcl' // Database SID

def port = 1521 // Database listener port

def saveBlob(blob, root, name, extension) {

def byteStream = blob.getBinaryStream()

def bytes = new byte[blob.length()]

byteStream.read(bytes)

def dir = root + name.replaceAll(/\/[^\/]+$/, '')

if (dir != name) {

new File(dir).mkdirs()

}

def f = new File(root + name + extension)

println "Writing ${f.getCanonicalPath()}"

f.delete()

f.withOutputStream { s ->

s.write(bytes)

}

}

sql = Sql.newInstance("jdbc:oracle:thin:@${host}:${port}:${sid}", user,

password, 'oracle.jdbc.driver.OracleDriver')

sql.eachRow("select name from all_java_classes where owner = ${user}") {

sql.call('''

declare

b blob;

begin

dbms_lob.createtemporary(b, FALSE);

dbms_java.export_class(?, ?, b);

? := b;

end;''', [it.name, user, Sql.BLOB]) { blob ->

saveBlob(blob, extractRoot, it.name, '.class')

}

}

sql.eachRow("select dbms_java.longname(object_name) \"name\" from all_objects where object_type = \'JAVA RESOURCE\' and owner = ${user}") {

sql.call('''

declare

b blob;

begin

dbms_lob.createtemporary(b, FALSE);

dbms_java.export_resource(?, ?, b);

? := b;

end;''', [it.name, user, Sql.BLOB]) { blob ->

saveBlob(blob, extractRoot, it.name, '')

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值