Java 调用bat执行的备份Oracle数据库 类(一)

2014-11-24 18:12:07 · 作者: · 浏览: 3

package com.buckupDB;


import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.swing.filechooser.FileSystemView;
import org.apache.tomcat.dbcp.dbcp.BasicDataSource;
import com.pm360.mda.platform.db.DBConn;
import com.pm360.mda.platform.util.DBUtil;
import com.pm360.mda.platform.util.Logger;
import com.pm360.mda.platform.util.StringUtil;



/**
*
* 数据备份 impdp / expdp
* @author ZQD32
*
*/
public class BuckupdpDB {


try {
try {
while(br.ready())//判断是否还有可读信息
{
//读取一行数据
String str=br.readLine().toString();
//设置数据库的实例
if(str.startsWith("set sid")){
str="set sid="+ConnInfoMap.get("sid");
}
//设置数据登录名
else if(str.startsWith("set user")){
str="set user="+ConnInfoMap.get("user");
}
//设置数据登密码
else if(str.startsWith("set pwd")){
str="set pwd="+ConnInfoMap.get("pwd");;
}
//设置备份项目id过滤
else if(str.startsWith("set proj_id")){
str="set proj_id="+StringUtil.formatDbColumn(map.get("PROJ_ID"));
}
//设置备份文件名
else if(str.startsWith("set filename")){
str="set filename="+filename;
}
//桌面路径
else if(str.startsWith("set Desktop")){
str="set Desktop="+getDesktopPath();
}
//dmp文件存放路径**************该路径需要查取的
else if(str.startsWith("set savePth")){
str="set savePth="+getDumpPath();
}
tmpBat.add(str);
}
//关闭缓冲器
br.close();
} catch (IOException e) {
try {
br.close();
} catch (IOException e1) {
e1.printStackTrace();
}
e.printStackTrace();
}

//设定写数据缓冲器 文件指向
PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream(Bfile)),true);
for(String str : tmpBat)
{
//按行写入
pw.println(str);
}
//pw.println("del /q BuckupParfile.par");
//pw.println("del /q temp.bat");

//关闭缓冲器
pw.close();

flag="good";
} catch (FileNotFoundException e) {
flag="error";
e.printStackTrace();
}
return flag;
}

/**
* 获取数据泵数据存储路径
* @return
*/
private static String getDumpPath()
{
//select OS_PATH from sys.dir$ where OS_PATH like '%\dpdump\'
String dumpPath=null;
Connection conn=null;
try {
conn=DBConn.getConnection("***");//该方法自己写
dumpPath = (String)DBUtil.getResultFieldValue(conn, "select OS_PATH from sys.dir$ where OS_PATH like '%\\dpdump\\'");
} catch (SQLException e) {
Logger.error(e);
}finally{
try
{
conn.close();
} catch (SQLException e)
{
Logger.error(e);
}
}
return dumpPath;
}

/**
* 配置数据泵的参数
* @param map
* @return
*/
private static String productionExpdpPar(Map map)
{
String proj_id = StringUtil.formatDbColumn(map.get("PROJ_ID"));
//获取模板 文件
File Afile=new File(StringUtil.formatDbColumn(map.get("Paths"))+"\\processBat\\dp\