java如何将dmp文件导入到oracle数据库中

java如何将dmp文件导入到oracle数据库中,第1张

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

try {

//获取备份路径

SystemSetting ss=AppgetSystemSetting("datebase_bak");

String bakpath=ssgetSettingValue();

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

javaioFile ff=new javaioFile(bakpath);

if(!ffexists()&&!ffisDirectory()){

ffmkdir();

}

//备份 *** 作开始

String baksql="";//备份语句

String dburl=AppgetConfigValue("dburl");

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

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

String[] newDBurlStrings=dburlsplit(":");

dataBaseName=newDBurlStrings[newDBurlStringslength-1]toUpperCase();

Calendar now = CalendargetInstance();

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

String baknameString=dataBaseName+nowget(CalendarYEAR)+nowget(CalendarMONTH)+nowget(CalendarDAY_OF_MONTH)+"dmp";

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

javaioFile bakfile=new javaioFile(bakpath+baknameString);

if(bakfileexists()){

bakfiledelete();

}

String username=AppgetConfigValue("dbusername");

String password=AppgetConfigValue("dbpassword");

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

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

Runtime rt = RuntimegetRuntime();

Process p = rtexec(baksql);

//pdestroy();

} catch (Exception e) {

loggerdebug("数据库备份出现异常:"+egetMessage());

return NONE;

}

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

链接数据库用到JDBC,一般链接数据库都要用到数据库驱动、链接字符串、登录名、登录密码。这4个属性可以提取到一个父类中,每一种数据库写一个类继承父类。要是这些都没问题了,就可以用楼上哥们儿说的,简单工厂模式,简单工厂是用到了java中的多态特性。 import javasqlConnection; public abstract class BaseConnect { public BaseConnect(String driverClass, String url, String loginName, String password) { super(); thisdriverClass = driverClass; thisurl = url; thisloginName = loginName; thispassword = password; } protected String driverClass; protected String url; protected String loginName; protected String password; public abstract void initDriver(); public abstract Connection getConnect(); public abstract void closeConnect(Connection conn); } import javasqlConnection; import javasqlDriverManager; import javasqlSQLException; public class OraclConnect extends BaseConnect { public OraclConnect(String driverClass, String url, String loginName, String password) { super(driverClass, url, loginName, password); // TODO Auto-generated constructor stub } @Override public void initDriver() { try { ClassforName(driverClass); } catch (ClassNotFoundException e) { eprintStackTrace(); } } @Override public Connection getConnect() { try { return DriverManagergetConnection(url, loginName, password); } catch (SQLException e) { eprintStackTrace(); } return null; } @Override public void closeConnect(Connection conn) { try { if (conn != null && !connisClosed()) { connclose(); } } catch (SQLException e) { eprintStackTrace(); } } } 以此类推,上面代码是我随便一写,你自己再改进下。蓝屏

很多朋友在Java开发中 使用Oracle数据库的时候 经常会碰到有ORA : maximum open cursors exceeded 的错误 实际上 这个错误的原因 主要还是代码问题引起的 ora : maximum open cursors exceeded 表示已经达到一个进程打开的最大游标数 这样的错误很容易出现在Java代码中的主要原因是 Java代码在执行conn createStatement()和conn prepareStatement()的时候 实际上都是相当与在数据库中打开了一个cursor 尤其是 如果你的createStatement和prepareStatement是在一个循环里面的话 就会非常容易出现这个问题 因为游标一直在不停的打开 而且没有关闭 一般来说 我们在写Java代码的时候 createStatement和prepareStatement都应该要放在循环外面 而且使用了这些Statment后 及时关闭 最好是在执行了一次executeQuery executeUpdate等之后 如果不需要使用结果集(ResultSet)的数据 就马上将Statment关闭 对于出现ORA 错误这种情况 单纯的加大open_cursors并不是好办法 那只是治标不治本 实际上 代码中的隐患并没有解除 而且 绝大部分情况下 open_cursors只需要设置一个比较小的值 就足够使用了 除非有非常特别的要求 lishixinzhi/Article/program/Oracle/201311/18963

那这样的话,你直接跟我说 你的win7系统有问题不就完了,我还能说什么。。。

既然程序没有问题,别人的可以用,说明应该是你的电脑在win7的配置环境的问题,你可以检查一下,因为你别的程序运行正常,这种可能性不是很大。

或者说你的连接jar包有问题,你试试吧别人的jar包复制一份导入到你的程序中看看,造成这个原因有可能是jar包比较老造成的

以上就是关于java如何将dmp文件导入到oracle数据库中全部的内容,包括:java如何将dmp文件导入到oracle数据库中、java实现从一个远程oracle数据库提取数据,之后写入本地的SQLserver数据库里。、Java开发中使用Oracle数据库的注意事项等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/sjk/9678604.html

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

发表评论

登录后才能评论

评论列表(0条)

保存