整理Java实现Oracle数据库导入/导出
* 导入/导出数据
* @param isImp true-导入,false-导出
* @param cmd cmd命令
* @return 执行后的提示信息
*/
public String impOrExpData(Boolean isImp ,String cmd){
Process process = null;
String message = null;
Runtime runtime = Runtime.getRuntime();
try {
//执行cmd命令(导入/导出)
process = runtime.exec(cmd);
//将process中流的数据存入日志文档,并获取process中的信息
message = inputToFile(process.getErrorStream(),isImp);
} catch (IOException e) {
e.printStackTrace();
}
return message;
}
/**
* 将流的文字信息存入文档,并返回该文字信息
* @param inputStream 包含信息的流
* @param isImp true-导入,false-导出
* @return 流中的文字信息
*/
private String inputToFile(InputStream inputStream, Boolean isImp){
String fileName = null;
BufferedReader reader = null;
BufferedWriter writer = null;
StringBuilder builder = new StringBuilder();
if(isImp == true){
//导入时文件提示信息的日志文件名
fileName = "ImpMessage_"+ UUID.randomUUID().toString() + ".txt";
}else{
//导出时文件提示信息的日志文件名
fileName = "ExpMessage_"+ UUID.randomUUID().toString() + ".txt";
}
try {
//读取字符流
reader = new BufferedReader(new InputStreamReader(inputStream));
//写出字符流
writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileName)));
String line = null;
while((line = reader.readLine())!= null){
builder.append(line+"\r\n");
//写出到文件日志中, \r\n时换行
writer.write(line+"\r\n");
}
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
if(reader!=null) {
reader.close();
}
if(writer!=null){
writer.close();
}
if(inputStream!=null){
inputStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return builder.toString();
}
/**
* 根据条件获取导入/ 导出cmd命令
* @param isImp true-导入,false-导出
* @param name 用户名
* @param password 密码
* @param postNo 端口号
* @param SID 数据库实例
* @param url 保存/文件路径
* @param fileName 导入/导出的文件名
* @return 导入/导出的cmd命令
*/
private String getCmd(Boolean isImp ,String name ,String password ,String postNo,String SID,String url,String fileName){
String cmd = null;
if(isImp == true){
//设置导入命令
cmd = "cmd.exe /c imp " + name + "/" + password +
"@" + postNo + "/" + SID + " file=" + url + "/" + fileName +
" ignore=y" + " full=y";
}else{
//导出时如果url路径不存在,创建文件夹
File file = new File(url);
if(file.exists()){
file.mkdirs();
}
//设置导出命令
cmd = "cmd.exe /c exp " + name + "/" + password +
"@" + postNo + "/" + SID + " file=" + url + "/" + fileName;
}
return cmd;
}
/**
* Java定时器(1)
* @param isGo
* @param time
*/
public void getTimer(boolean isGo,long time){
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
//执行代码
if(!isGo) {
timer.cancel();
}
}
},100,time);
}