sql上报数据2

/**

*初始化入库文件的数据库相关信息

*@paramfileName

*@paramdbInfo

*/

publicSqlLoad(StringfileName,DBInfodbInfo,StringloadDirectory)

{

this.fileName=fileName;

//配置数据库相关信息

dbType=dbInfo.getDbType();

host=DasUtil.longToIP(dbInfo.getIp());

db=dbInfo.getSchema();

uName=dbInfo.getUserName();

passwd=dbInfo.getPassword();

//生成的load文件目录

sqlLoadDirectory=loadDirectory;

}

/**

*上报数据

*

*@return

*/

publicbooleansqlldr(AbstractSqlLoadoracleSqlload)

{

//定义处理状态

booleanresult=false;

//如果dbType是RptConstants.DB_TYPE_MYSQL,数据库类型是MySQL

if(dbType==DasConstants.DB_TYPE_MYSQL)

{

MySQLSqlLoadsqlload=newMySQLSqlLoad();

//设置相关参数

sqlload.setDataBase(db);

sqlload.setHost(host);

sqlload.setPassword(passwd);

sqlload.setUser(uName);

sqlload.setHome(DASProperties.getMysql_home());

try

{

sqlload.setFilenameAndTable(getSqlLoadDirectory(),fileName,

fileName.substring(fileName.indexOf("_")+1,fileName

.lastIndexOf(".")));

}

catch(IOExceptione)

{

logger.error(e.getMessage(),e);

}

//SQLLOAD加载

try

{

result=sqlload.preform();

}

catch(Throwablee)

{

logger.error("Mysqlsqlloaddatafilefailed.",e);

}

//判断load子进程是否挂死或超时

if(sqlload.isTimeOut())

{

thrownewIllegalThreadStateException(

"Themysqlsqlldrprcessisnotdetermined!");

}

}

//如果dbType是RptConstants.DB_TYPE_ORACLE,数据库类型是ORACLE

elseif(dbType==DasConstants.DB_TYPE_ORACLE)

{

try

{

StringtabName=fileName.substring(fileName.indexOf("_")+1,

fileName.lastIndexOf(DasConstants.TXT_FIILE_SUFFIX));

Stringpath=newFile(getSqlLoadDirectory(),fileName)

.getPath();

//在linux服务器下使用oracleoci实现的jnisqlldr。

if(oracleSqlload.isLinux())

{

result=ociSqlldr(path,oracleSqlload);

}

//其它操作系统使用oraclesqlldr工具进行load数据。

else

{

result=oracleSqlldr(tabName,path,oracleSqlload);

}

}

catch(Throwablee)

{

logger

.error("Sqlloaddatafile"+this.fileName+"failed",

e);

}

}

/*返回处理状态*/

returnresult;

}

相关推荐