日期:2014-05-17  浏览次数:21110 次

java程序中如何用RunTime执行sql plus命令
问题是这样的:
Oracle服务器装在局域网内的某台电脑上:比如192.168.0.100;自己的机子ip(装有客户端)是192.168.0.33;
在java程序中我想读取某一个表(比如muser)的所有数据作为备份。

下面是一些参数:
服务器id:gzxx
服务器ip:192.168.0.100
服务器port:1521
表名:muser

如何用java的RunTime类的exec函数,执行sql   plus命令将muser表数据导出c:\test.txt文件中,字段间以“,”间隔,每条记录为一行。。。。。

万分感谢!!!

------解决方案--------------------
把命令写进bat文件。java调用bat可以吗?

package test;

import java.io.IOException;

public class Test {

public static void main(String[] args) {
try {
Runtime r = Runtime.getRuntime();
Process p = r.exec( "cmd.exe /c "+ "start /min d:\\a.bat ");
} catch (IOException e) {
e.printStackTrace();
}
}

}
------解决方案--------------------
r.exec( "cmd.exe /c "+ "start /min exp username/password@servicename file=filename ... ");
直接使用一条exp就可以了。
------解决方案--------------------
对于这个错误,怀疑是两边数据库的字段类型有出入造成的。
exp的话,语法大概是 exp userid/passwd@连接名 .... tables=tablename query= 'where 条件部分 '
倒入的话,使用imp倒入即可。

不过我倒不推荐使用这种方法。
如果sqlloader不行,可以考虑使用pro*c把格式好的数据倒入到DB中。
大概的思路:
使用plsql生成一个自定义格式的文件比如说.csv(逗号分割)
使用pro*c读取生成生的.csv文件,把数据insert到数据库中。
------解决方案--------------------
现在oracle支持java存储过程,这是个好东西,你可以试试也许可以解决你说的问题!