2019独角兽企业重金招聘Python工程师标准>>>

#Oracle客户端配置
ORACLE_HOME=/export/home/tmn/oracle/product/11.2.0/dbhome
NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
export ORACLE_HOME NLS_LANG
PATH=$PATH:$ORACLE_HOME/bin
export PATH
LD_LIBRARY_PATH=/usr/lib64:/export/home/tmn/oracle/product/11.2.0/dbhome/lib32:/export/home/tmn/oracle/product/11.2.0/dbhome/lib:/usr/local/lib
export LD_LIBRARY_PATH#对日期格式化处理
NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'
NLS_TIMESTAMP_FORMAT='YYYY-MM-DD HH24:MI:SS'
export NLS_DATE_FORMAT NLS_TIMESTAMP_FORMATalias echo='echo -e'
SHELL=/bin/bash
LC_ALL=zh_CN.GB18030
JAVA_JRE=/usr/jdk6/jre
NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
LD_LIBRARY_PATH=/usr/lib64:/export/home/tmn/oracle/product/11.2.0/dbhome/lib32:/export/home/tmn/oracle/product/11.2.0/dbhome/lib:/usr/local/lib
PATH=.:/export/home/tmn/oracle/product/11.2.0/dbhome/bin:.:/export/home/tmn/oracle/product/11.2.0/dbhome/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/jdk6/bin:/usr/jdk6/jre/bin:/sbin:/usr/bin:.:/export/home/tmn/bin:/usr/jdk6/bin:/usr/jdk6/jre/bin:/sbin:/usr/bin:.
JAVA_HOME=/usr/jdk6
ODBCSYSINI=/usr/local/unixODBC/etc
ODBCINI=/usr/local/unixODBC/etc/odbc.ini
ODBCHOME=/usr/local/unixODBC
CLASSPATH=/usr/jdk6/lib:/usr/jdk6/jre/lib:.
ORACLE_HOME=/export/home/tmn/oracle/product/11.2.0/dbhome
export SHELL NLS_LANG LC_ALL JAVA_JRE LD_LIBRARY_PATH PATH JAVA_HOME ODBCSYSINI
export ODBCSYSINI ODBCINI ODBCHOME CLASSPATH ORACLE_HOME
#!/bin/perl
################################################################################
##                       导出模板数据到excel
## 编写:清风
## 日期:2012/8/24 星期五 17:08:21 沈阳
## 用法:perl main.pl 用户名 密码 server 生成属性目录 数据字典位置 生成excel目录
#################################################################################传入参数
my $username=shift;             #用户名
my $password=shift;             #密码
my $dbserver=shift;             #server
my $attr_dir=shift;             #生成属性目录
my $dict_dir=shift;             #数据字典位置
my $excel_dir=shift;            #生成excel目录
my $TEMPLATE_ID=shift;          #模板ID
my $user=shift;                 #用户账号
my $condition=shift;            #查询条件
my $mobile=shift;                  #手机号#系统参数
my $maxcpu=80;
my $maxmem=5000000;#引用模块
use DBI;
use Shell;
use Encode;
use Encode qw(decode);
use POSIX qw(strftime); #格式化时间
use Data::Dumper;
use Getopt::Long;
use DBD::Oracle;
use Time::Local;
use Time::HiRes; #为了得到毫秒的数据
use Spreadsheet::WriteExcel;
use Excel::Writer::XLSX;my $cpu =  getcpu();
my $mem  = getmem();
print "user:$cpu\n";
print "user:$mem\n";
if($cpu<$maxcpu && $mem<$maxmem) {chomp($mobile);if($mobile ne ''){$context="综合资源服务器负荷已经到达极限,请稍后再使用数据导出功能!";my $dbh_mss=DBI->connect('dbi:ODBC:sms','SGSHRUser','SGSHRPwd');my $dbh_ora=DBI->connect("DBI:Oracle:rmw","rmw2","rmw2!23lc");my $sth_mss=$dbh_mss->prepare("exec sp_Messages_Send '$mobile','$context',0,0,0,'ZHZY',0,'','',''");my $sth_ora=$dbh_ora->prepare("insert into app_sms (mobile, content, time_stamp, issend) values ('$mobile','$context',sysdate,'1')");$sth_mss->execute();$sth_ora->execute();$sth_mss->finish();$sth_ora->finish();$dbh_mss->disconnect();$dbh_ora->disconnect();}#释放内存print `free && sync && echo 3 > /proc/sys/vm/drop_caches && echo "" && free`;exit 0;
}#定义系统模板表和属性表
$MY_TEMPLATEDEF="A_TEMPLATEDEF";
$MY_RESATTRIBUTE="M_RESATTRIBUTE";
#查询条件
chomp($condition);
if($condition ne '1=1')
{$condition="and city_id=".$condition;
} else {$condition="and ".$condition;
}#print "获取程序开始运行时间,以秒为单位计时..."."\n";
$START_TIME=time();
#print "连接数据库..."."\n";
$dbh = DBI->connect("DBI:Oracle:$dbserver","$username","$password") || die ('connecting failed!');
$dbh->{LongTruncOk} = true;
$dbh->{LongReadLen} = "10000";
#print "注意:连接的数据库是:$dbserver,用户名是:$username..."."\n";#获得模型英文名
$sql_sta= "SELECT TPLNETYPE FROM A_TEMPLATEDEF T WHERE T.TPID = '$TEMPLATE_ID'";
$sql = $dbh->prepare($sql_sta);
$sql->execute();
my $RESCLASSENNAME = '';
while( my @sql_column = $sql->fetchrow_array() )
{$RESCLASSENNAME=$sql_column[0];#表名
}if($RESCLASSENNAME ne '')
{if($TEMPLATE_ID ne ''){$RESCLASSENNAME=uc($RESCLASSENNAME);#转换成大写$sql_sta= "SELECT DSTABLENAME FROM M_RESCLASS WHERE RESCLASSENNAME = '$RESCLASSENNAME'";$sql = $dbh->prepare($sql_sta); $sql->execute();my $dstablename = '';while( my @sql_column = $sql->fetchrow_array() ){$dstablename=$sql_column[0];#表名}my $sql_sta = "SELECT TPLCNNAME,TPLENNAME FROM ".$MY_TEMPLATEDEF." WHERE STATEFLAG=0 AND TPID =$TEMPLATE_ID";my $filename = "";$sql = $dbh->prepare($sql_sta); $sql->execute();while( my @sql_column = $sql->fetchrow_array() ){$filename=$sql_column[0];#模板中文名#$filename=$sql_column[1];#模板英文名}#导出M_RESATTRIBUTE表数据到文件中以^_^分割my $resattribute_ini=$attr_dir."/".$user."_".$RESCLASSENNAME."_resattribute.ini";my $sqlcontenttmp="SELECT RESCLASSENNAME,ATTRIBUTECOLUMNNAME,ATTRIBUTEENNAME,ATTRIBUTECNNAME,IFCHANGE,INPUTTYPE,SOURCEEXPRESSION,DATATYPE FROM ".$MY_RESATTRIBUTE." WHERE RESCLASSENNAME='$RESCLASSENNAME'";export_data($dbserver,$username,$password,$sqlcontenttmp,$resattribute_ini);#导出系统模版表数据到文件中以^_^分割my $templatedef_ini=$attr_dir."/".$user."_".$RESCLASSENNAME."_templatedef.ini";$sqlcontenttmp="SELECT A.TPLNETYPE, B.RESCLASSCNNAME, A.TPLCOLDESC FROM ".$MY_TEMPLATEDEF." A, M_RESCLASS B WHERE A.TPLNETYPE = B.RESCLASSENNAME AND A.TPID = '$TEMPLATE_ID'";export_data($dbserver,$username,$password,$sqlcontenttmp,$templatedef_ini);#导出字典关联翻译属性到文件中以^_^分割#select int_id,zh_label from RMS_EQUIPROOM where stateflag=0 中 int_id,zh_label 不可以有空格open(RFILE1,"<$resattribute_ini") || die "1.Can not open $resattribute_ini : $!\n"; while(defined($line=<RFILE1>)){chomp($line);@field=split(/\^\_\^/,$line);$attributecolumnname=$field[1];$attributeid=$field[2];$inputtype=$field[5];$sourceexpression=$field[6];$datatype=$field[7];if($inputtype eq 'select' || $inputtype eq 'pageselectmore'){#获得sourceexpression的表名@fieldes=split(/\s+/,$sourceexpression);@id_name=split(/,/,uc($fieldes[1]));$dict_table=$fieldes[3];#获得sourceexpression的value名$id_name=$id_name[0];if($dict_table ne 'g_com_dict' & $datatype eq 'integer'){$sourceexpression=~s/$dict_table/$dict_table a/;$sourceexpression=$sourceexpression.' and exists(select 1 from '.$dstablename.' b where stateflag=0 and b.'.$attributecolumnname.' = a.'.$id_name.' )';}my $dict_file=$dict_dir."/".$user."_".$RESCLASSENNAME."_".$attributecolumnname.".ini";    #字典导出文件名$sqlcontenttmp=$sourceexpression;open(RFILE2,"<$templatedef_ini") || die "Can not open $templatedef_ini : $!\n"; while(defined($line=<RFILE2>)){# TPLNETYPE     TPLCNNAME       TPLCOLDESC                                                                                                                                                                                                                                                                                                                                             #----------     ---------       -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------#JTWIND_CON     系统默认查询    int_id,city_id,is_wrong,wrong_info,zh_label,related_equiproom,equ_type,equ_subclass,ne_code,asset_no,model,vendor,brand,supplier,company_maintain,start_time,end_time,status,fan_num,output_cap,maintain_person,flowid,modify_by,modify_date,stateflag,time_stamp@field=split(/\^\_\^/,$line);$tplcoldesc=$field[2];@col_list=split(/\,/,$tplcoldesc);for(my $i=0;$i<@col_list;$i++){my $col_name=trim($col_list[$i]);if($col_name eq $attributeid){export_data($dbserver,$username,$password,$sqlcontenttmp,$dict_file);}}}}}print "hash_join($dict_dir,$excel_dir,$resattribute_ini,$templatedef_ini,$filename,$dbserver,$username,$password,$dstablename,$mobile,$condition)\n";hash_join($dict_dir,$excel_dir,$resattribute_ini,$templatedef_ini,$filename,$dbserver,$username,$password,$dstablename,$mobile,$condition);#print "导出数据用时".reckon_runtime($START_TIME)."秒\n";}
}#!/bin/perl
################################################################################
##          生成导出模板数据的SQL语句,将数据导出到excel
## 编写:清风
## 日期:2012/8/24 星期五 18:09:23 沈阳
##
################################################################################
sub hash_join
{my $dict_dir=shift;my $excel_dir=shift;my $attr_file=shift;my $tmp_file=shift;my $filename=shift;my $dbserver=shift;my $username=shift;my $password=shift;my $dstablename=shift;my $mobile=shift;my $condition=shift;my %col_id_hash=();         #id对应的字段my %col_zhname_hash=();     #id对应的字段中文名my @need_decode_array=();   #存放需要翻译的字段my %col_inputtype_hash=();  #INPUTTYPE哈希数据为0的不处理,为1的用函数idname()my $resclassenname;if (!$excel_dir || !$dstablename ||!$attr_file || !$tmp_file || !$dict_dir || !$dbserver|| !$username || !$password){die "Usage: perl 参数不正确!\n";}open(RFILE1,"<$attr_file") || die "2.Can not open $attr_file : $!\n";  while(defined($line=<RFILE1>)){#RESCLASSENNAME    ATTRIBUTECOLUMNNAME    ATTRIBUTEENNAME     ATTRIBUTECNNAME                IFCHANGE    INPUTTYPE         SOURCEEXPRESSION#--------------    -------------------    ---------------     ---------------                --------    ---------         ----------------#IPACCESS          related_server_id      related_server_id   AR(或BR/AR)承载业务局        1           pageselectmore    select int_id,zh_label from V_RMS_IPACCESS where stateflag=0#IPACCESS          capacity               capacity            承载业务容量(单位:万用户)    0           input    #IPACCESS          con_mss_name           con_mss_name        对接的CE设备名称               2           select            select a.value,a.name from g_com_dict a,g_com_dict b where a.super_code=b.code and b.dict_index='COMM_MATCH' order by a.name#IPACCESS          con_mss_port           con_mss_port        对接的CE设备端口               1           select            select int_id,zh_label from RMS_GPRSPORT where stateflag=0chomp($line);@field=split(/\^\_\^/,$line);$resclassenname=$field[0];$attributecolumnname=$field[1];$resattributeid=$field[2];$attributecnname=$field[3];$ifchange=$field[4];$inputtype=$field[5];$sourceexpression=$field[6];#模型字段和物理字段对应关系$col_id_hash{$resattributeid}=${attributecolumnname};#物理字段和字段名称对应关系$col_zhname_hash{$resattributeid}=${attributecnname};#INPUTTYPE输入类型,默认为0,pageselectmore为1$col_inputtype_hash{$attributecolumnname}=0;#对于翻译,字典翻译有2种,其他的都一样if($ifchange eq 0){next;#对于不需要翻译的不做处理}#没有字典表的字典翻译if($ifchange eq 2 && $sourceexpression=~/\;/ ){$dict_file=$dict_dir."/".$attributecolumnname.".ini";%$attributecolumnname=();@dict_list=split(/\;/,$sourceexpression);foreach(@dict_list){if($_=~/\,/){@dict_data=split(/\,/,$_);${$attributecolumnname}{$dict_data[0]}=$dict_data[1];}else{${$attributecolumnname}{$_}=$_;}#print "$attributecolumnname ${$attributecolumnname} $dict_data[0] $dict_data[1]\n";}@need_decode_array=(@need_decode_array,$attributecolumnname);next;}#关联翻译,有字典表的翻译同样处理。if($ifchange ne 0 ){if($inputtype eq 'select'|| $inputtype eq 'pageselectmore'){$dict_file=$dict_dir."/".$user."_".$RESCLASSENNAME."_".$attributecolumnname.".ini";%$attributecolumnname=();if( -s $dict_file )#如果存在$dict_file则打开,如果不加判断可能会报错.{open(RDICT,"<$dict_file") || next "3.Can not open $dict_file : $!\n";  while(defined($dict_line=<RDICT>)){chomp($dict_line);@dict_data=split(/\^\_\^/,$dict_line);${$attributecolumnname}{$dict_data[0]}=$dict_data[1];}@need_decode_array=(@need_decode_array,$attributecolumnname);close(RDICT);}unlink ($dict_file);}}}close(RFILE1);open(RFILE2,"<$tmp_file") || die "4.Can not open $tmp_file : $!\n";  while(defined($line=<RFILE2>)){# TPLNETYPE     TPLCNNAME       TPLCOLDESC                                                                                                                                                                                                                                                                                                                                             #----------     ---------       -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------#JTWIND_CON     系统默认查询    int_id,city_id,is_wrong,wrong_info,zh_label,related_equiproom,equ_type,equ_subclass,ne_code,asset_no,model,vendor,brand,supplier,company_maintain,start_time,end_time,status,fan_num,output_cap,maintain_person,flowid,modify_by,modify_date,stateflag,time_stamp#MSSTRUNKGRP    系统默认查询    tkgp_direction,zh_label,city_id,status,rate,type,a_equiproom_id,source_ne_id,source_port_id,z_equiproom_id,remote_ne_id,remote_port_id,isunidirectional,time_stamp,stateflag,remark,creator,creat_time,modifier,modify_time@field=split(/\^\_\^/,$line);$tplnetype=$field[0];$resclasscnname=$field[1]; $tplcoldesc=$field[2];@col_list=split(/\,/,$tplcoldesc);@excel_tile=();@excel_col=();$unload_sql="select ";    for(my $i=0;$i<@col_list;$i++){my $value=trim($col_list[$i]);$col_name=$col_id_hash{$value};$col_zhname=$col_zhname_hash{$value};@excel_tile=(@excel_tile,$col_zhname);@excel_col=(@excel_col,$col_name);#回车换行导致导出文件不对,串行修改#$unload_sql=$unload_sql."replace(replace(".$col_name.",chr(13),''),chr(10),''),"$unload_sql=$unload_sql.$col_name.","}chop($unload_sql);$unload_sql=$unload_sql." from ".$dstablename." where stateflag=0";}$unload_sql=$unload_sql.' '.$condition;print "\n导出SQL语句:\n$unload_sql\n\n";close(RFILE2);#导出数据文件名$file_name=$excel_dir.'/'.$user.'_'.$dstablename.'.ini';#导出模版数据export_data($dbserver,$username,$password,$unload_sql,$file_name);#print "\n";#生成excel文件名my $timeStr = strftime "%Y-%m-%d.%H.%M", localtime;#$excel_file=$excel_dir.'/'.$user.'_'.$resclassenname.'.'.$timeStr.'.xlsx';#my $url=$user.'_'.$resclassenname.'.'.$timeStr.'.xlsx';$excel_file=$excel_dir.'/'.$user.'_'.$resclasscnname.'.'.$timeStr.'.xlsx';my $url=$user.'_'.$resclasscnname.'.'.$timeStr.'.xlsx';print "$url\n";#如果导出数据文件不为空,则创建excel文件if( -s $file_name ){my $inputDataFile=$file_name;my $outputDataFile=$excel_file;my @report_title=@excel_tile;my @table_cols=@excel_col;my @decode_cols=@need_decode_array;my $max_row=900000;     #设定生成EXCEL2007最大行数(90万),实际可以支持1048576            my $max_col=16384;      #设定生成EXCEL2007最大列数(400),实际可以支持16384my $all_row=0;my $row=0;my $sheet_num=1;my $workBook = Excel::Writer::XLSX->new($outputDataFile);#excel表头样式my $format_header = $workBook->add_format(bold =>1, border => 1);$format_header->set_font(decode('gbk','Tahoma'));$format_header->set_size( 11 );#excel body样式my $format_body = $workBook->add_format(border => 1);$format_body->set_font('Tahoma');$format_body->set_size( 11 );#添加模板数据sheet$sheet_name=$workBook->add_worksheet(decode('gbk',$filename));#excel表头my $colNum=@report_title;for my $col (0..$colNum-1){$value=trim($report_title[$col]);$sheet_name->write($row,$col,decode('gbk',$value), $format_header);}$row+=1;#excel bodyopen (SOURCEDATAFILE, "<$inputDataFile");while(defined($line=<SOURCEDATAFILE>)){chomp($line);my @cols=split(/\^\_\^/,$line);%col_ps=remenber_positon_by_id(@table_cols);foreach(@decode_cols){my $word=$_;$data_ps=$col_ps{$_};                            #得到字段在数组中的位置$decode_befor=$cols[$data_ps];                   #得到相应字段的值if($decode_befor =~ /^(.*\,.*)$/){my @cols_sub=split(/\,/,$decode_befor);for $n (0..$#cols_sub){$decode_befor_sub=$cols_sub[$n];$new_data_sub=${$word}{$decode_befor_sub};$cols_sub[$n]=$new_data_sub;}$cols[$data_ps]=join ',',@cols_sub;}else{if($data_ps ne ''){$new_data=${$_}{$decode_befor};if($new_data ne ''){$cols[$data_ps]=$new_data;              #赋给新的值}}}}if($row<$max_row){   my $col=0;while($col<$colNum){if($col<$max_col){$value=trim($cols[$col]);$sheet_name->write($row, $col, decode('gbk',$value));#$sheet_name->write($row, $col, decode('gb2312',$value), $format_body);$col++;}else{#print "注意:超出设定最大列数:$max_col,后续字段不再导出!\n";#print "注意:请调整程序配置最大列数!\n";exit;}}}else{$sheet_num++;$row=0;#添加模板数据sheet$sheet_name=$workBook->add_worksheet(decode('gbk',$filename.$sheet_num));#excel表头$colNum=@report_title;for my $col (0..$colNum-1){$value=trim($report_title[$col]);$sheet_name->write($row,$col,decode('gbk',$value), $format_header);}$row++;my $col=0;while($col<$colNum){if($col<$max_col){$value=trim($cols[$col]);$sheet_name->write($row, $col, decode('gbk',$value));#$sheet_name->write($row, $col, decode('gb2312',$value), $format_body);$col++;}else{#print "注意:超出设定最大列数:$max_col,后续字段不再导出!\n";#print "注意:请调整程序配置最大列数!\n";exit;}}}$row++;$all_row++;if($row%10000==0){my $cpu =  getcpu();my $mem  = getmem();print "$cpu\n";print "$mem\n";print "$row\n";if($cpu<$maxcpu && $mem<$maxmem){chomp($mobile);if($mobile ne ''){$context="综合资源服务器负荷已经到达极限,请稍后再使用数据导出功能!";my $dbh_mss=DBI->connect('dbi:ODBC:sms','SGSHRUser','SGSHRPwd');my $dbh_ora=DBI->connect("DBI:Oracle:rmw","rmw2","rmw2!23lc");my $sth_mss=$dbh_mss->prepare("exec sp_Messages_Send '$mobile','$context',0,0,0,'ZHZY',0,'','',''");my $sth_ora=$dbh_ora->prepare("insert into app_sms (mobile, content, time_stamp, issend) values ('$mobile','$context',sysdate,'1')");$sth_mss->execute();$sth_ora->execute();$sth_mss->finish();$sth_ora->finish();$dbh_mss->disconnect();$dbh_ora->disconnect();}#释放内存print `free && sync && echo 3 > /proc/sys/vm/drop_caches && echo "" && free`;exit 0;}}}$row-=1;$all_row-=1;$workBook->close();if ($row < 1){unlink ($outputDataFile);}unlink ($file_name);chomp($mobile);if($mobile ne ''){$context="数据导出:文件[".$filename."]共导出".$all_row."行,耗时".reckon_runtime($START_TIME)."秒,请到[基础功能-数据导出]模块下载!";my $dbh_mss=DBI->connect('dbi:ODBC:sms','SGSHRUser','SGSHRPwd');my $dbh_ora=DBI->connect("DBI:Oracle:rmw","rmw2","rmw2!23lc");my $sth_mss=$dbh_mss->prepare("exec sp_Messages_Send '$mobile','$context',0,0,0,'ZHZY',0,'','',''");my $sth_ora=$dbh_ora->prepare("insert into app_sms (mobile, content, time_stamp, issend) values ('$mobile','$context',sysdate,'1')");$sth_mss->execute();$sth_ora->execute();$sth_mss->finish();$sth_ora->finish();$dbh_mss->disconnect();$dbh_ora->disconnect();}}else{#print "查询数据库为空,删除文件$file_name...\n";unlink ($file_name);}
}################################################################################
##                        导出数据库数据到文件
## 编写:清风
## 日期:2012/8/23 星期四 13:26:51 沈阳
##
################################################################################
sub export_data
{my $dbserver=shift; #数据库信息my $username=shift;my $password=shift;my $sql=shift;      #sql语句my $file_name=shift;#执行sql后生成的文件名my @field;          #sql语句执行结果数组#print "连接数据库...\n";my $dbh = DBI->connect("DBI:Oracle:$dbserver","$username","$password");if($dbh){#print "连接数据库成功...\n";}else{#print "连接数据库失败...\n";exit(1);}my $filename=`basename $file_name`;#print "$file_name\n";open(WFILE,">$file_name") || die "打开文件失败!\n";#执行SELECT语句并获取数据my $sth = $dbh->prepare("$sql");$sth->execute();#读取sql语句执行结果数据while(@field=$sth->fetchrow_array){foreach(@field){$_=~s/[\r\n]+/ /g;#替换换行回车}write_file(WFILE,(@field));print WFILE "\n";}close(WFILE);$sth->finish();#print "关闭数据库...\n";$dbh->disconnect();
}####################################################################################
## 函数名称:write_file
## 函数功能:将输入参数指定的数组写入文件中
## 输入参数:$WRFILE  要写入数据的文件句柄
##           @row_data 要写入文件中一行数据
## 输出参数:无
## 返回  值: 无
## 说    明:
####################################################################################
sub  write_file
{my $i=0;my ($W_FILE,@row_data)=@_;my $col_num=@row_data;for($i=0;$i<$col_num;$i++){$row_data[$i]=trim($row_data[$i]);#$mid_data=encode("gb2312",decode("gbk",$row_data[$i]));print $W_FILE $row_data[$i].chr(94).chr(95).chr(94);}
}####################################################################################
# 函数名称:remenber_positon_by_id
# 函数功能:记住标题的位置,防止标题顺序改变和使数据异常
# 输入参数:@title 要分析的标题
#
# 输出参数:%positonlist 以标题为索引的数组
####################################################################################
sub remenber_positon_by_id
{local(@title)=@_;my $title_num = @title;my %positonlist=();for($i=0; $i<$title_num; $i++){$mid_titel=$title[$i];$positonlist{$mid_titel}=$i;}return (%positonlist);
}####################################################################################
## 函数名称:trim
## 函数功能:将输入变量中的前后空格去掉。输入变量的值不变,返回去空格后的值
## 输入参数:$line 要去除前后空格的字符串变量
## 输出参数:无
## 返回  值: 去掉前后空格后的字符串变量
## 说    明:
####################################################################################
sub trim
{my ($line)=@_;$line=~s/^[ \t]+//;    #替换掉开头空格$line=~s/[ \t\r\n]+$//;#替换掉结尾空格return $line;
}
####################################################################################
##          计算入参到调用该Perl程序时经过的时长,以S为单位
## 日期:2011.03.03    北京
## 功能: 计算入参到调用该Perl程序时经过的时长,以S为单位
## 脚本说明:
## 入参1:起始时间
## 要求参数格式如下:2011-03-03 10:10:10
####################################################################################
sub reckon_runtime()
{$start_time=shift;#起始时间$cur_time=time();#当前时间$result=0;$result_sec=$cur_time-$start_time;if($start_time ne ''){#如果时间超过1分钟,显示分钟if($result_sec<=60){$result=$result_sec;}elsif($result_sec>60){$result_min = int($result_sec/60);$result_sec = $result_sec%60;$result = $result_min."分".$result_sec;}else{$result=$result_sec;}#如果时间超过60分钟,显示时钟#如果时间超过24小时,显示天数}else{$result="null";}
}
####################################################################################
##          获取CPU、内存
## 编写:清风
## 日期:2015/12/29 13:03:54    沈阳
####################################################################################
sub getcpu
{@cpu=split(/\n/,`top -b -n 2|grep %id`);@cpu=split(/,/,$cpu[1]);@cpu=split(/\%/,$cpu[3]);$cpu=trim($cpu[0]);return $cpu;
}sub getmem
{@mem=split(/,/,`top -b -n 1|grep Mem`);@mem=split(/k/,$mem[2]);$mem=trim($mem[0]);return $mem;
}
;

转载于:https://my.oschina.net/fengyunfu/blog/738927

原创哈希数据导出算法相关推荐

  1. [原创软件]考勤数据导出工具

    软件主要功能: 显示考勤机数据 根据时间导出考勤数据 自动定时加载Python脚本,执行加工处理并上传服务器 程序界面截图: 开发环境及语言: c# .NET Framework 4.0 Visual ...

  2. 一致性哈希 数据迁移 mysql_一致性哈希算法解决分布式数据扩容

    一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似.一致性哈希修正了CARP使用的简 单哈 ...

  3. oracle 导出数据 utl,【原创】利用utl_file包进行表数据导出

    利用utl_file包进行表数据导出 2013/11/12 一.概述 工作中需要将许多表的数据导出到一份excel中,虽然PL/SQL自带有导出的功能,但是导出后需要进行手动的汇总到一张excel中, ...

  4. 自动驾驶 | MINet:嵌入式平台上的实时Lidar点云数据分割算法,速度可达 20-80 FPS!...

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 这篇文章是激光雷达点云数据分割算法的嵌入式平台上的部署实现.主要的创新点有两点:一是利用多路分支采用不 ...

  5. QIIME 2教程. 10数据导出Exporting data(2020.11)

    文章目录 QIIME 2用户文档. 10数据导出 导出特征表 导出进化树 导出与提取 译者简介 Reference 猜你喜欢 写在后面 QIIME 2用户文档. 10数据导出 https://docs ...

  6. QIIME 2用户文档. 9数据导出Exporting data(2018.11)

    文章目录 前情提要 QIIME 2用户文档. 9数据导出 导出特征表 导出进化树 导出与提取 Reference 译者简介 猜你喜欢 写在后面 前情提要 文章导读:QIIME 2可重复.交互和扩展的微 ...

  7. vivado----fpga硬件调试 (六)----数据导出

    总结一: 众所周知,ADC调试不单单是ADC芯片功能的调试,还涉及到后期对ADC芯片的性能评估和验证,这些工作都需要在MATLAB中完成.在ISE开发环境下,一般是这样处理: 1.ChipScope中 ...

  8. python输出数据到excel-python实现数据导出到excel的示例

    这篇文章主要介绍了关于python实现数据导出到excel的示例,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 此文是在django框架下编写,从数据库中获取数据使用的是django- ...

  9. matlab simulink数据导出到变量区

    simulink数据导出到变量空间主要有2种方法: 1.通过out模块 对于低版本的matlab(15a之前的)要取消勾选limit data points to last,不然导出来的数据最多只有1 ...

最新文章

  1. 抛弃windows用linux来工作吧
  2. ECharts+BaiduMap+HT for Web网络拓扑图应用
  3. mysql gbk字符集_Mysql字符集知识总结
  4. MFC 加载并显示图片的四种方法
  5. .NET、C#和ASP.NET,ASP.NET MVC 四者之间的区别
  6. 用matlab解一维单势垒波函数,一维多势垒结构准束缚态的MATLAB分析计算
  7. 【Python学习笔记】Coursera课程《Python Data Structures》 密歇根大学 Charles Severance——Week6 Tuple课堂笔记...
  8. 24.Forbidden
  9. linux基础-01-用户和目录、vim、归档和解压、系统启动流程、加密
  10. 【计算机网络】局域网原理与技术(局域网概述、以太网技术、高速以太网、虚拟局域网、无线局域网)
  11. EXCEL破冰 - 如何为透视表组织数据
  12. Python 标准库 —— queue、heapq与PriorityQueue
  13. Alex 的 Hadoop 菜鸟教程: 第16课 Pig 安装使用教程
  14. java之PropertyUtils
  15. 吴怀宇 第三版 自动控制原理课后习题答案 武汉科技大学814
  16. 中国科学院大学2017年高等代数考研试题
  17. oracle财务管理系统有什么用,CSS_Oracle财务管理系统:会计业务周期,下面是使用Oracle财务管理系统 - phpStudy...
  18. python处理图片像素_Python 处理图片像素点的实例
  19. 向量叉积和点积混合运算_向量点积与叉积的意义
  20. ONLYOFFICE的表单复杂字段开发详解

热门文章

  1. labview将产生数据存入数组 并保存成Excel
  2. android wear 2.0 moto360 二代,最好看的 Android Wear, 二代 Moto 360 可能就是这样了
  3. 大乐斗2服务器维护,2月23日更新公告
  4. Spring 详解(二):IOC 和DI
  5. 可逆加密算法 php,php可逆加密的方法及原理
  6. mysql查询cpu使用率100%_数据库CPU使用率100% 排查记
  7. win2003服务器的一些安全设置
  8. 迷途の荣耀 Chapter Ⅱ
  9. “RPC好,还是RESTful好?”
  10. 启动vm虚拟机里的系统时,提示此主机支持 AMD-V,但 AMD-V 处于禁用状态。