Oracle快速导出数据文件(二)

2015-07-21 16:26:40 · 作者: · 浏览: 5
D_PASSTHRU=1","SHLIB_PATH=/oracle/app/oracle/product/11.2.0/dbhome_2/lib:/oracle/app/oracle/product/11.2.0/dbhome_2/rdbms/lib","ODS_HOME=/int_file/ODS_ETL/","ORACLE_HOME=/oracle/app/oracle/product/11.2.0/dbhome_2","_=/bin/env","OLDPWD=/int_file/lubinsu/etl_data","NLSPATH=/usr/lib/nls/msg/%L/%N:/usr/lib/nls/msg/%L/%N.cat","LD_LIBRARY_PATH=/oracle/app/oracle/product/11.2.0/dbhome_2/bin:/oracle/app/oracle/product/11.2.0/dbhome_2/lib:/oracle/app/oracle/product/11.2.0/dbhome_2/rdbms/lib:/usr/lib:/lib"}; Process prc = null; int exitVal = 0; cmd[0] = "/int_file/lubinsu/scripts/etl_dispatch/css_etl/java_etl/db2File.sh"; cmd[1] = srcDb; cmd[2] = descDir; cmd[3] = srcSql; cmd[4] = fileNm; try { prc = Runtime.getRuntime().exec(cmd, env); } catch (IOException e) { e.printStackTrace(); } InputStream stderr = prc.getErrorStream(); InputStreamReader isr = new InputStreamReader(stderr); BufferedReader br = new BufferedReader(isr); String line = null; //打印返回信息 try { while ((line = br.readLine()) != null) System.out.println(line); } catch (IOException e) { e.printStackTrace(); } try { exitVal = prc.waitFor(); } catch (InterruptedException e) { e.printStackTrace(); } //打印返回号 if (exitVal > 0) { System.out.println("Process exitValue: " + exitVal); } //获取结束时间 Date vEndTime = new Date(); System.out.println("End sending ... " + sdf.format(vEndTime) + ",elapsed time: " + (vEndTime.getTime() - vStartTime.getTime())/1000 + " seconds."); } /** * * @return * @throws Exception * @see java.util.concurrent.Callable#call() */ @Override public Object call() throws Exception { SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); Date vStartDt = new Date(); GenericDaoImpl.update("INSERT INTO shell_proc_db_2_db_log(proc_id, run_msg, status, stat_cycle_id) VALUES(?, ?, ?, ?)", new String[]{procId, sdf.format(vStartDt) + " 文件开始导出", "2", statCycleId}); db2FileExtractByProcInfo(srcDb, destDir, srcSql, fileNm.toUpperCase() + "_" + statCycleId + ".DEL"); GenericDaoImpl.update("UPDATE shell_proc_db_2_db_log o SET o.status = 0, modify_dt = SYSDATE, run_msg = o.run_msg || CHR(13) || to_char(SYSDATE, 'yyyy/mm/dd hh24:mi:ss') || ' 文件生成结束' WHERE proc_id = ? and stat_cycle_id = ?", new String[] { procId, statCycleId}); GenericDaoImpl.update("UPDATE shell_proc_db_2_db_cfg o SET o.last_succ_cycle = ? WHERE o.proc_id = ?", new String[] { statCycleId, procId}); return null; } }

获取配置的流程信息:

?

?

public static List
  
   > getProcIdForDb2File() {
		//获取当前时间
		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd HH:mm:ss");
		Date vNowDate = new Date();
		String vNowDateStr = sdf.format(vNowDate);
		ResultSetHandler rsh = new BeanListHandler();
		String vRunSql = "SELECT proc_id, src_db, src_sql, dest_dir, file_nm, stat_cycle_id\n" +
						"  FROM (SELECT o.run_type,\n" + 
						"               o.proc_id,\n" + 
						"               o.src_db,\n" + 
						"               o.src_sql,\n" + 
						"               o.dest_dir,\n" + 
						"               o.file_nm,\n" + 
						"               o.last_succ_cycle,\n" + 
						"               CASE\n" + 
						"                 WHEN o.run_type = 2 THEN\n" + 
						"                  to_char(to_date('" + vNowDateStr + "', 'yyyymmdd hh24:mi:ss') - 1, '