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;
}