java中如何连接oracle 导出的dmp文件

java中如何连接oracle 导出的dmp文件,第1张

这个问题要先注意:oracle是不能用语句直接导出的,而常规的导出办法是用cmd的DOS命令来 *** 作,之前我已经试过了,具体代码如下:

try {

//获取备份路径

SystemSetting ss=App.getSystemSetting("datebase_bak")

String bakpath=ss.getSettingValue()

//判断路径是否存在,不存在创建

java.io.File ff=new java.io.File(bakpath)

if(!ff.exists()&&!ff.isDirectory()){

ff.mkdir()

}

//备份 *** 作开始

String baksql=""//备份语句

String dburl=App.getConfigValue("db.url")

String dataBaseName=""//数据库名称

//oracle中数据库名放在最后

String[] newDBurlStrings=dburl.split(":")

dataBaseName=newDBurlStrings[newDBurlStrings.length-1].toUpperCase()

Calendar now = Calendar.getInstance()

//备份文件名称(数据库名+年月日)

String baknameString=dataBaseName+now.get(Calendar.YEAR)+now.get(Calendar.MONTH)+now.get(Calendar.DAY_OF_MONTH)+".dmp"

//如果已存在当天的备份先删除之前的备份

java.io.File bakfile=new java.io.File(bakpath+baknameString)

if(bakfile.exists()){

bakfile.delete()

}

String username=App.getConfigValue("db.username")

String password=App.getConfigValue("db.password")

baksql="exp "+username+"/"+password+"@"+dataBaseName+" file="+bakpath+baknameString+" full=y"

//oracle无法用sql语句进行备份只能通过cmd命令备份

Runtime rt = Runtime.getRuntime()

Process p = rt.exec(baksql)

//p.destroy()

} catch (Exception e) {

logger.debug("数据库备份出现异常:"+e.getMessage())

return NONE

}

大致是这样,其他的你修改下就可以了

在使用IDEA进行Java开发时,如果需要导入DMP文件,可以通过以下步骤进行:

1. 在项目中创建一个名为“lib”的文件夹,用于存放DMP文件。

2. 将DMP文件复制到“lib”文件夹下。

3. 在IDEA中打开项目,并右键单击项目名称,选择“Open Module Settings”。

4. 在“Project Structure”窗口中,选择“Modules”,然后单击“Dependencies”选项卡。

5. 单击“+”按钮,选择“JARs or directories”选项,然后选择“lib”文件夹中的DMP文件。

6. 单击“OK”按钮保存更改。

通过以上步骤,就可以成功将DMP文件导入到IDEA项目中,并且可以在代码中成功使用相关的功能

方法1,imp是oracle提供的系统命令,在cmd下可以调用,故可以通过java.lang.Runtime包里的exec来实现。具体你去看看手册。

这个方法的前提条件是必须服务器在cmd下能执行imp命令,如果是linux的服务器,也只要能执行同样调用。

方法2,通过sql语句实现。

就是自己实现备份,恢复。不使用oracle内部的命令。

原理就是检索出所有的对象,然后写入文件,这里要注意分批导出与分批导入(也就是多个文件),不然数据量大了,速速就很慢。

导出数据,存储过程,触发器,视图,权限等。这个就看你的需求了。。

然后在分析文件实现导入。。

3,自己编写系统程序,实现导入功能,仍然通过Runtime.exec来调用。

4,因为imp是系统命令,你用stmt来调用是不对的,这个stmt只能执行sql语句,是oracle来分析的,所以会报错不是有效的sql语句。

你换runtime.exec来执行,我想应该会成功的。。。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11506734.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存