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

2015-07-21 16:26:40 · 作者: · 浏览: 7

数据文件生成方式有多种,但是大多效率低下,对于大型数据仓库来说,高效导出文件是迫切需求:

这里通过shell+java的方式集成老熊写的数据文件生成工具,效率比普通的导出方法高70%:

shell文件生成脚本:

Java调用脚本:这里implement Callable接口,实现了多线程的调用方式:
/**   
 * @Title: Db2FileSync.java
 * @Package etl.etlUtils
 * @Description: TODO
 * @author Lubin Su
 * @date 2015年7月15日 下午12:43:09
 * @version V1.0   
 */
package etl.etlUtils;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.Callable;

import etl.dao.impl.GenericDaoImpl;

/**
 * 
 * @author Lubin Su
 * @date 2015年7月15日 下午12:43:09
 * @version V1.0
 */
public class Db2FileSync implements Callable {
	
	private String procId;
	private String srcDb;
	private String destDir;
	private String srcSql;
	private String fileNm;
	private String statCycleId;

	/**
	 *

Title: 构造函数

*

Description:

* @param procId * @param srcDb * @param destDir * @param srcSql * @param fileNm * @param statCycleId */ public Db2FileSync(String procId, String srcDb, String destDir, String srcSql, String fileNm, String statCycleId) { super(); this.procId = procId; this.srcDb = srcDb; this.destDir = destDir; this.srcSql = srcSql; this.fileNm = fileNm; this.statCycleId = statCycleId; } /** * 数据表以文件的方式下发 * @author lubinsu * @date 2015年7月12日 * @param procId * @throws UnsupportedEncodingException */ public void db2FileExtractByProcInfo(String srcDb, String descDir, String srcSql, String fileNm) throws UnsupportedEncodingException { //获取当前时间 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date vStartTime = new Date(); System.out.println("Start sending ... " + sdf.format(vStartTime)); String[] cmd = new String[5]; //环境变量 String[] env = {"lubinsu_dir=/int_file/lubinsu","AUTHSTATE=compat","TERM=vt100","SHELL=/usr/bin/bash","NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK","SSH_CLIENT=132.228.78.73 49796 22","SSH_TTY=/dev/pts/4","LOCPATH=/usr/lib/nls/loc","USER=css_int","ODMDIR=/etc/objrepos","ORACLE_BASE=/oracle/app/oracle","TMOUT=0","MAIL=/usr/spool/mail/css_int","PATH=:/usr/java6_64/bin:/opt/freeware/bin:/usr/local/bin:/bin:/usr/bin:/usr/sbin:/oracle/app/oracle/product/11.2.0/dbhome_2/bin:/home/css_app/bin:/oracle/app/oracle/product/11.2.0/dbhome_2/bin:/urs/ccs/bin:/bin:/usr/bin:/usr/bin:/etc:/usr/sbin:/usr/ucb:/usr/bin/X11:/sbin:/usr/java5/jre/bin:/usr/java5/bin:.","css_int_HOME=/int_file","LOGIN=css_int","PWD=/int_file/lubinsu/scripts/etl_dispatch/css_etl","JAVA_HOME=:/usr/java6_64","EDITOR=vi","JAVA_COMPILER=NONE","LANG=AMERICAN_AMERICA.ZHS16GBK","etl_dir=/int_file/etl_dir","TZ=Asia/Shanghai","LIB_PATH=/oracle/app/oracle/product/11.2.0/dbhome_2/lib:/oracle/app/oracle/product/11.2.0/dbhome_2/rdbms/lib:/usr/lib:/lib","SHLVL=1","HOME=/int_file","etl_dispatch=/int_file/lubinsu/scripts/etl_dispatch/css_etl","LC__FASTMSG=true","MAILMSG=[YOU HAVE NEW MAIL]","LOGNAME=css_int","CLASSPATH=::/usr/java6_64/lib","SSH_CONNECTION=132.228.78.73 49796 132.228.27.132 22","CLCM