使用java:现象:
StringBuffer exp = new StringBuffer("imp ");
exp.append(userName);
exp.append("/");
exp.append(passWord);
exp.append("@");
exp.append(dataBaseName);
exp.append(" file=d:\\DBackUP.dmp full=y ignore=y"); ....
Process p=Runtime.getRuntime().exec(exp.toString());
如果数据事先手动删除所有表,那么恢复是成功的。但是如果不删除Tables下面的表,那么
数据库恢复失败(还是原来的数据库数据)。其实我不想要原来的数据,要使用D:\\DBackUP.dmp
里的数据。那么怎么解决这个问题呢?
1.imp 命令里有覆盖原来数据的参数么?
2.怎么不手动删除,而用java代码在imp之前删除所有表?
StringBuffer exp = new StringBuffer("imp ");
exp.append(userName);
exp.append("/");
exp.append(passWord);
exp.append("@");
exp.append(dataBaseName);
exp.append(" file=d:\\DBackUP.dmp full=y ignore=y"); ....
Process p=Runtime.getRuntime().exec(exp.toString());
如果数据事先手动删除所有表,那么恢复是成功的。但是如果不删除Tables下面的表,那么
数据库恢复失败(还是原来的数据库数据)。其实我不想要原来的数据,要使用D:\\DBackUP.dmp
里的数据。那么怎么解决这个问题呢?
1.imp 命令里有覆盖原来数据的参数么?
2.怎么不手动删除,而用java代码在imp之前删除所有表?
这个应该是没有这样的参数的,IMP使用的时候,就是“在原表基础上累加数据”,而不是覆盖原有的数据。2.你要删除所有表还是所有表的现有数据啊?
2.要删除所有的表,这样再使用imp方法就可以成功了
oracle10以上是个好主意。如果真的想删,那就select 'drop table '||table_name||' ;' from user_tables ; 把结果执行一遍