flag="good";
} catch (FileNotFoundException e) {
flag="error";
e.printStackTrace();
}
return flag;
}
/**
* 獲取數(shù)據(jù)泵數(shù)據(jù)存儲路徑
* @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;
}
/**
* 配置數(shù)據(jù)泵的參數(shù)
* @param map
* @return
*/
private static String productionExpdpPar(Map<String, Object> map)
{
String proj_id = StringUtil.formatDbColumn(map.get("PROJ_ID"));
//獲取模板 文件
File Afile=new File(StringUtil.formatDbColumn(map.get("Paths"))+"\\processBat\\dp\\BuckupParfile.par");
//生成空白的bat臨時文件
File Bfile=new File(StringUtil.formatDbColumn(map.get("Paths"))+"\\BuckupParfile.par");
try {
//申明讀取緩沖器 //設置讀取緩沖器 文件指向
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(Afile)));
//設定寫數(shù)據(jù)緩沖器 文件指向
PrintWriter pw= new PrintWriter(new OutputStreamWriter(new FileOutputStream(Bfile)),true);
try {
while(br.ready())//判斷是否還有可讀信息
{
//讀取一行數(shù)據(jù)
String str=br.readLine().toString();
str=str.replace("%proj_id%", proj_id);
pw.println(str);
}
br.close();
pw.close();
} catch (IOException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return "";
}
/**
* 生成導入配置bat文件
* @param map
* @return
*/
private static String productionImpBat(Map<String, Object> map)
{
//獲取 rar 備份 文件的名字
String FilePath=StringUtil.formatDbColumn(map.get("FilePath"));
String FileName = FilePath.substring(FilePath.lastIndexOf('\\')+1);
//生成 導入前清理 sql 文件
productionClearSql(map);
Map<String,String> ConnInfoMap =getConnInfo();
//設置一個標志
String flag="";
//創(chuàng)建個緩存 數(shù)據(jù)集
List<String> tmpBat=new ArrayList<String>();
//獲取模板 文件
File Afile=new File(StringUtil.formatDbColumn(map.get("Paths"))+"\\processBat\\dp\\impdpDB.bat");
//生成空白的bat臨時文件
File Bfile=new File(StringUtil.formatDbColumn(map.get("Paths"))+"\\temp.bat");
//申明讀取緩沖器
BufferedReader br=null;
try {
//設置讀取緩沖器 文件指向
br = new BufferedReader(new InputStreamReader(new FileInputStream(Afile)));
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
try {
try {
while(br.ready())//判斷是否還有可讀信息
{
//讀取一行數(shù)據(jù)
String str=br.readLine().toString();
//設置數(shù)據(jù)庫的實例
if(str.startsWith("set sid")){
str="set sid="+ConnInfoMap.get("sid");
}
//設置數(shù)據(jù)登錄名
else if(str.startsWith("set user")){
str="set user="+ConnInfoMap.get("user");
}
//設置數(shù)據(jù)登密碼
else if(str.startsWith("set pwd")){
str="set pwd="+ConnInfoMap.get("pwd");
}
//設置備份文件 路徑
else if(str.startsWith("set FilePath")){
str="set FilePath="+FilePath;
}
//dump路徑
else if(str.startsWith("set Dumpfile")){
str="set Dumpfile="+getDumpPath();
}
//文件名
else if(str.startsWith("set FileName")){
str="set FileName="+FileName;
}
tmpBat.add(str);
}
//關(guān)閉緩沖器
br.close();
} catch (IOException e) {
try {
br.close();
} catch (IOException e1) {
e1.printStackTrace();
}
e.printStackTrace();
}
//設定寫數(shù)據(jù)緩沖器 文件指向
PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream(Bfile)),true);
for(String str : tmpBat)
{
//按行寫入
pw.println(str);
}
pw.println("ECHO watting …………………………");
pw.println("sqlplus %user%/%pwd%@%sid% @UpdateParentId.sql ");
pw.println("del /q UpdateParentId.sql");
pw.println("del /q impClearing.sql");
pw.println("del /q temp.bat");
//關(guān)閉緩沖器
pw.close();
flag="good";
} catch (FileNotFoundException e) {
flag="error";
e.printStackTrace();
}
return flag;
}
/**
* 生成導入前sql清理文件
* @param map
* @return
*/
private static String productionClearSql(Map<String, Object> map)
{
//獲取項目id
//StringUtil.formatDbColumn(map.get("PROJ_ID")) 這個是即將導入 項目的 新的父id
String proj_id =getProjId(map);
//創(chuàng)建個緩存 數(shù)據(jù)集
List<String> tmpBat=new ArrayList<String>();
//獲取模板 文件
File Afile=new File(StringUtil.formatDbColumn(map.get("Paths"))+"\\processBat\\dp\\impClearing.sql");
//生成空白的bat臨時文件
File Bfile=new File(StringUtil.formatDbColumn(map.get("Paths"))+"\\impClearing.sql");
//申明讀取緩沖器
BufferedReader br=null;
try {
//設置讀取緩沖器 文件指向
br = new BufferedReader(new InputStreamReader(new FileInputStream(Afile)));
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
try {
try {
while(br.ready())//判斷是否還有可讀信息
{
//讀取一行數(shù)據(jù)
String str=br.readLine().toString();
//設置備份文件名 %proj_id%
str = str.replace("%proj_id%", proj_id);
tmpBat.add(str);
}
//關(guān)閉緩沖器
br.close();
} catch (IOException e) {
try {
br.close();
} catch (IOException e1) {
e1.printStackTrace();
}
e.printStackTrace();
}
//設定寫數(shù)據(jù)緩沖器 文件指向
PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream(Bfile)),true);
for(String str : tmpBat)
{
//按行寫入
pw.println(str);
}
pw.println("exit");
//關(guān)閉緩沖器
pw.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return "";
}
/**
* 生成導入 項目的id 和 更新語句
* @param map
* @return
*/
private static String getProjId(Map<String, Object> map)
{
String FilePath=StringUtil.formatDbColumn(map.get("FilePath"));
FilePath = FilePath.substring(FilePath.lastIndexOf("-")+1, FilePath.lastIndexOf('.'));
File UpParentId=new File(StringUtil.formatDbColumn(map.get("Paths"))+"\\UpdateParentId.sql");
PrintWriter pw;
try {
pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream(UpParentId)),true);
pw.println("update cm_proj t set t.parent_proj_id='"+StringUtil.formatDbColumn(map.get("PROJ_ID"))+"',t.parent_path=('"
+getProjPath(StringUtil.formatDbColumn(map.get("PROJ_ID")))+"'||';'||'"+FilePath+"') where t.proj_id='"+FilePath+"';");
pw.println("commit;");
pw.println("exit");
//關(guān)閉緩沖器
pw.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return FilePath;
}
/**
* 獲取父級路徑
* @param map
* @return
*/
private static String getProjPath(String proj_id)
{
String projPath=null;
Connection conn=null;
try {
conn=DBConn.getConnection("***");//該方法自己寫
projPath = (String)DBUtil.getResultFieldValue(conn, "select parent_path from cm_proj where proj_id ='"+proj_id+"'");
conn.close();
} catch (SQLException e) {
Logger.error(e);
}finally{
try
{
conn.close();
} catch (SQLException e)
{
Logger.error(e);
}
}
return projPath;
}
} 本文出自:億恩科技【1tcdy.com】
服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]
|