这个问题要先注意: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;
}
大致是这样,其他的你修改下就可以了
可以通过Java的Runtime,
Runtime runtime = Runtime.getRuntime();
至于导入要看你的运行环境,windows的话可以通过调用cmd.exe。如:
runtime.exec(“cmd /c start 。。。”);
还要考虑连接的数据库是远程还是本地,
最后给你一个完整连接远程的实现方法,本地就把ip换成本地就行
Runtime runtime = Runtime.getRuntime();
runtime.exec(“cmd /c start imp 数据库登录名/数据库登录密码@要连接的IP:端口号/服务名 file=dmp文件路径 ”);
具体情况根据你的情况更改
plsql developer就可以 登录后工具--》导入表--》在下边选择dmp文件--》点击导入
用plsql 打开你的数据库 然后工具--》导入表--》浏览 导入
dos:imp 用户名/密码 dmp文件路径/文件名