int MtxLP::getColType(string name) const{ return get_col_type(ncol(name)); }
bool DBProcess::conversion_start_another(unsigned long timeout) { char sql[1024] = { 0 }; char tmp_str[512] = { 0 }; char ttmp[512] = { 0 }; char tt[100] = { 0 }; int i = 0; int j= 0; int index = 0; int colindex; long totleindex = 0; Service::printConsole("[%c] is start to working\n",process_id); int k; for(k= 0; k < m_an_orcl.size(); k++) { index = 0; totleindex = 0; Service::printConsole("[%c] Start to transfering from Sybase_tabname: %s to Oracle_tabname: %s\n",process_id,m_an_sy[k].c_str(),m_an_orcl[k].c_str()); get_col_type_sy(m_an_sy[k]);// get v_type_sy for sybase; get_col_type(m_an_orcl[k]);// get v_type for orcl if(!makesql_sec(m_an_sy[k],m_col_sy[k])) { return false; } memset(ttmp, 0, sizeof(ttmp)); snprintf(ttmp,1024, "insert into %s ( %s ) values ( ",m_an_orcl[k].c_str(),m_col_orcl[k].c_str()); // exists or not and create the bak table. first if(!droptable(m_an_orcl[k])) { Service::printConsole("drop and create datebase table_bak failed\n"); return false; } try { // truncate table second /// memset(tt,0,100); snprintf(tt,100,"TRUNCATE TABLE %s",m_an_orcl[k].c_str()); m_dbmanager->getquery_orcl()->command(tt); m_dbmanager->getquery_orcl()->execute(); m_dbmanager->getquery_sy()->command(m_str); m_dbmanager->getquery_sy()->execute(); if(m_dbmanager->getquery_sy()->eof()) return false; while(!m_dbmanager->getquery_sy()->eof()) { colindex=0; memset(tmp_str,0,1024); m_dbmanager->getquery_sy()->fetchNext(); { // vector<string> v_tmp = spiltChar(m_col_orcl[k],","); char tmp[1024] = { 0 }; for(j = 0;j < v_tmp.size();j++) { for (i = 0;i < v_type.size();i++) { if(strncmp(v_tmp[j].c_str(),v_type[i].col_name.c_str(),strlen(v_tmp[j].c_str())) == 0) { memset(tmp,0,1024); if( (strcmp(v_type[i].col_type.c_str(),"DATE") == 0) || (strcmp(v_type[i].col_type.c_str(),"TIMESTAMP(6)") == 0)) { string t = m_dbmanager->getquery_sy()->getFieldByColumn(colindex++)->asString(); if(strncmp(t.c_str(),"NULL",4) == 0) t = ""; snprintf(tmp,1024," to_date(trim('%s'),'yyyy.mm.dd hh24:mi:ss') ",t.c_str()); } else { if( (strcmp(v_type[i].col_type.c_str(),"CHAR") == 0) || (strcmp(v_type[i].col_type.c_str(),"VARCHAR2") == 0)){ string t = m_dbmanager->getquery_sy()->getFieldByColumn(colindex++)->asString(); if(strncmp(t.c_str(),"NULL",4) == 0) t.clear(); snprintf(tmp,1024," TRIM('%s ') ",t.c_str()); } if( strcmp(v_type[i].col_type.c_str(),"NUMBER") == 0) snprintf(tmp,1024," %f ",m_dbmanager->getquery_sy()->getFieldByColumn(colindex++)->asFloat()); } break; } } if(j != v_tmp.size()-1) { strncat(tmp," , ",3); } else { strncat(tmp," ) ",3); } strncat(tmp_str,tmp,strlen(tmp)); } // } snprintf(sql,1024,"%s %s",ttmp,tmp_str); m_dbmanager->getquery_orcl()->command(sql); m_dbmanager->getquery_orcl()->execute(); index ++; totleindex++; if(index == MAXCOLUMS) { m_dbmanager->getquery_orcl()->command("commit"); m_dbmanager->getquery_orcl()->execute(); index = 0; } } m_dbmanager->getquery_orcl()->command("commit"); m_dbmanager->getquery_orcl()->execute(); } catch(BaseException& err) { m_logger.error("%s %s\r\n",err.name.c_str(),err.description.c_str()); Service::printConsole("[%c] conversion from sybase to oracle failed !!oracle_tabname: %s \n",process_id ,m_an_orcl[k].c_str()); return false ; } Service::printConsole("[%c] Transfer from Sybase to Oracle Successed !!Sybase_tabnae: %s >> Oracle_tabname: %s .TotleIndex:%ld\n",process_id, m_an_sy[k].c_str(),m_an_orcl[k].c_str(),totleindex); } Service::printConsole("[%c] Has been finished the work O(¡É_¡É)O~\n",process_id); return true ; }