系统运维工程师
· 金融
pqss_data_load.pl 加载数据到 sql server 2000 字数 161334 阅读 3723 评论 1 赞 1
1)加载配置文件 pqss_data_load.ini #采集系统配置档案 [DBINIT] DBCONN_POWER = DSN = zz_power; UID=sa; PWD =sys; database = pqsspower; #本地连接 DBCONN_BASE = DSN = zz_power; UID=sa; PWD =sys; database = pqssbase; #远程连接 # DBCONN = driver={sql server}; server=172.26.35.42; DSN=wodeperl; UID=sa; PWD=wode; database=pqsspower; #这里,路径内不能有空格且不区分大小写,如E:wodedata loadlog,不符合。 OutputPath = E:wodedataloaddata #源数据目录 UnprocessedPath = E:wodedataloadunprocess #未处理的数据目录 LogPath = E:wodedataloadlog #日志目录 BackUpPath = E:wodedataloadbackup #备份目录 [END_DBINIT] [LOAD_CONFIG] load_config_flag = 0 # 0:全加载目录OutputPath下所有的文件,转换规则是[DEFAULT_CONVERT]; # 1:按配置加载,转换规则有几组: # load_meter参数的第一个设备(如,4111001)的转换规则对应[CONFIG_CONVERT_1], # 第二个设备的转换规则对应[CONFIG_CONVERT_2],依此类推。 load_meter = 4111001,4111003 # 加载物理电表ID meter_convert_inx = 1, 2 # 按convert_1转换,load_meter相对应的电表 load_begin_date = 20101209 # 加载开始日期,20110908 load_end_date = 20101210 # 加载结束日期,20110908 [END_LOAD_CONFIG] [DEFAULT_CONVERT] #数据库索引, 偏移系数a[减], 比例系数b[乘], 比例系数c[除], y = (x-a) × b / c 21 = 2047,150,2047 #va 23 = 2047,150,2047 #vb 25 = 2047,150,2047 #vc 11 = 2047,10,2047 #Ia 13 = 2047,10,2047 #Ib 15 = 2047,10,2047 #Ic 84 = 2047,3000,2047 #P 94 = 2047,3000,2047 #Q 99 = 2047,3000,2047 #S 104 = 2047,1,1000 #PF 111 = -6142.5,30,4095 #Freq 41 = 2047,300,2047 #Uab 43 = 2047,300,2047 #Ubc 45 = 2047,300,2047 #Uca 124 = 0,1,1 #PW+ 125 = 0,1,1 #PW- 134 = 0,1,1 #QW+ 135 = 0,1,1 #QW- 136 = 0,1,1 #SW 81 = 2047,3000,2047 #Pa 82 = 2047,3000,2047 #Pb 83 = 2047,3000,2047 #Pc 91 = 2047,3000,2047 #Qa 92 = 2047,3000,2047 #Qb 93 = 2047,3000,2047 #Qc 96 = 2047,3000,2047 #Sa 97 = 2047,3000,2047 #Sb 98 = 2047,3000,2047 #Sc 101 = 2047,1,1000 #PFa 102 = 2047,1,1000 #PFb 103 = 2047,1,1000 #PFc 12 = 0,1,10 #AngIa 14 = 0,1,10 #AngIb 16 = 0,1,10 #AngIc 22 = 0,1,10 #AngVab 24 = 0,1,10 #AngVbc 26 = 0,1,10 #AngVca 211 = 0,1,100 #THDVa 212 = 0,1,100 #THDVb 213 = 0,1,100 #THDVc 201 = 0,1,100 #THDIa 202 = 0,1,100 #THDb 203 = 0,1,100 #THDIc 555 = 12,1,9999 [END_DEFAULT_CONVERT] [CONFIG_CONVERT_1] #数据库索引, 偏移系数a[减], 比例系数b[乘], 比例系数c[除], y = (x-a) × b / c 21 = 2047,150,2047 #va 23 = 2047,150,2047 #vb 25 = 2047,150,2047 #vc 11 = 2047,10,2047 #Ia 13 = 2047,10,2047 #Ib 15 = 2047,10,2047 #Ic 84 = 2047,3000,2047 #P 94 = 2047,3000,2047 #Q 99 = 2047,3000,2047 #S 104 = 2047,1,1000 #PF 111 = -6142.5,30,4095 #Freq 41 = 2047,300,2047 #Uab 43 = 2047,300,2047 #Ubc 45 = 2047,300,2047 #Uca 124 = 0,1,1 #PW+ 125 = 0,1,1 #PW- 134 = 0,1,1 #QW+ 135 = 0,1,1 #QW- 136 = 0,1,1 #SW 81 = 2047,3000,2047 #Pa 82 = 2047,3000,2047 #Pb 83 = 2047,3000,2047 #Pc 91 = 2047,3000,2047 #Qa 92 = 2047,3000,2047 #Qb 93 = 2047,3000,2047 #Qc 96 = 2047,3000,2047 #Sa 97 = 2047,3000,2047 #Sb 98 = 2047,3000,2047 #Sc 101 = 2047,1,1000 #PFa 102 = 2047,1,1000 #PFb 103 = 2047,1,1000 #PFc 12 = 0,1,10 #AngIa 14 = 0,1,10 #AngIb 16 = 0,1,10 #AngIc 22 = 0,1,10 #AngVab 24 = 0,1,10 #AngVbc 26 = 0,1,10 #AngVca 211 = 0,1,100 #THDVa 212 = 0,1,100 #THDVb 213 = 0,1,100 #THDVc 201 = 0,1,100 #THDIa 202 = 0,1,100 #THDb 203 = 0,1,100 #THDIc 555 = 12,1,9999 [END_CONFIG_CONVERT_1] [CONFIG_CONVERT_2] #数据库索引, 偏移系数a[减], 比例系数b[乘], 比例系数c[除], y = (x-a) × b / c 21 = 2047,150,2047 #va 23 = 2047,150,2047 #vb 25 = 2047,150,2047 #vc 11 = 2047,10,2047 #Ia 13 = 2047,10,2047 #Ib 15 = 2047,10,2047 #Ic 84 = 2047,3000,2047 #P 94 = 2047,3000,2047 #Q 99 = 2047,3000,2047 #S 104 = 2047,1,1000 #PF 111 = -6142.5,30,4095 #Freq 41 = 2047,300,2047 #Uab 43 = 2047,300,2047 #Ubc 45 = 2047,300,2047 #Uca 124 = 0,1,1 #PW+ 125 = 0,1,1 #PW- 134 = 0,1,1 #QW+ 135 = 0,1,1 #QW- 136 = 0,1,1 #SW 81 = 2047,3000,2047 #Pa 82 = 2047,3000,2047 #Pb 83 = 2047,3000,2047 #Pc 91 = 2047,3000,2047 #Qa 92 = 2047,3000,2047 #Qb 93 = 2047,3000,2047 #Qc 96 = 2047,3000,2047 #Sa 97 = 2047,3000,2047 #Sb 98 = 2047,3000,2047 #Sc 101 = 2047,1,1000 #PFa 102 = 2047,1,1000 #PFb 103 = 2047,1,1000 #PFc 12 = 0,1,10 #AngIa 14 = 0,1,10 #AngIb 16 = 0,1,10 #AngIc 22 = 0,1,10 #AngVab 24 = 0,1,10 #AngVbc 26 = 0,1,10 #AngVca 211 = 0,1,100 #THDVa 212 = 0,1,100 #THDVb 213 = 0,1,100 #THDVc 201 = 0,1,100 #THDIa 202 = 0,1,100 #THDb 203 = 0,1,100 #THDIc 555 = 12,1,9999 [END_CONFIG_CONVERT_1] ===================================================================================== 2) pqss_data_load.pl 加载脚本 use strict; use DBI; use File::Basename; use File::stat; use File::Copy; use File::glob; use Time::localtime; use Cwd; use Math::Complex; use Win32::ODBC; our $pqss_data_load_init = "e:\wode\dataload\pqss_data_load.ini"; our @LOAD_INIT; # 配置文件的内容 our $DSN_POWER; # 连接数据库 our $DSN_BASE; # 连接数据库 our $DBNAME = "pqsspower"; our $DBNAME_BASE = "pqssbase"; our $DBH; our $ret; our $tm = get_time("yyyymmdd"); our $LOADLOG = "pqss_load_$tm.log"; # 日志 our $DATAPATH; # 源数据目录 our $UNDOPATH; # 未处理文件目录 our $BACKUPPATH; # 备份目录 our $load_config_flag; # 0:默认全加载目录OutputPath下所有的文件;1:按配置加载 our $data_rectime; # 文件名中的日期 20101218235039 年月日时分秒 our @load_data_files; # 获取加载的文件名,不带路径 our %data_hash; # 散列,保存了各列及其值 our %data_hash2; # 临时 # %data_hash = ( # 21 => 6000.12, # 23 => 6100.50, # ); #----------------配置加载---------------- our @load_meter; # 加载的物理电表。配置加载,load_meter是简单的一维数组。 our @meter_convert_inx; # 配置转换规则选项 our @load_date; # 加载文件的日期范围,[$load_beg_date,$load_end_date] our $load_beg_date; our $load_end_date; our %convert_array_hash; # 以数组的散列保存需要转换的列 # %convert_array_hash = ( # 21 => [2047,150,2047], # 23 => [2045,130,2045], # ); our $progtm; sub main { #----------main start------- $progtm = get_time("YYYY-MM-DD,HH:MI:SS"); # 1.获取配置参数 get_param(); wtlog("Program $0 start $progtm.n"); # 2.--------DB Connection-------- $DBH = wode_db_conn($$DSN_POWER); # 3.入库主程序 load_main($DBH); # 调试信息 debug_param_print(); # 4.---------DB Close----------- $ret = wode_db_close($DBH); wtlog("Close database $ret!(1:ok; 0:fail)n"); #----------main end------- $progtm = get_time("YYYY-MM-DD,HH:MI:SS"); wtlog("Program $0 end $progtm.n"); } sub load_main{ my ($dbh) = @_; my ($datafile,$fe); # 获取电表 get_meters(); if(1 == $load_config_flag) # 按配置加载物理电表 { get_load_date(); # 获取加载文件的日期区间 @load_date get_meter_convert_inx(); } elsif(0 == $load_config_flag) { } else { wtlog("--> sub load_main --> error load_cong $load_config_flagn"); } #获取加载的文件名,不带路径 @load_data_files get_load_data_files(); foreach $fe (@load_data_files) # 循环加载每个数据文件 { $datafile = $DATAPATH."\$fe"; #带绝对路径的文件名 fetch_load_data($datafile); #获取数据文件内容 %data_hash do_convert($fe); #转换由fetch_load_data得到的数据文件内容,%data_hash wtlog("n--->sub load_main,file: $datafile <---nn"); pqss_imp_data($dbh,$fe); # 将当前文件数据内容入库 move_load_file($datafile); #当前文件移至备份目录 } } sub move_load_file{ #当前文件移至备份目录 my ($datafile) = @_; #带路径 my $datafile_date = substr($data_rectime,0,8); my $backpath = $BACKUPPATH."\$datafile_date"; mkdir("$backpath") unless(-d $backpath);#加载完的文件移动到$BACKUPPATH路径下,并按文件日期分开 if(0 == system("move /Y $datafile $backpath")) { wtlog("move $datafile to $backpath ok!n"); } else { wtlog("move $datafile to $backpath error--> $!n"); die("move $datafile to $backpath error--> $!n"); } } sub pqss_imp_data{ # 入库 my ($dbh,$datafile) = @_; pqss_imp_vhisdata($dbh,$datafile); # 1 将当前文件电压数据内容入库 pqss_imp_fvhisdata($dbh,$datafile); # 2 将当前文件基波电压数据内容入库 pqss_imp_psvhisdata($dbh,$datafile); # 3 将当前文件相序电压数据内容入库 pqss_imp_ihisdata($dbh,$datafile); # 4 将当前文件电流数据内容入库 pqss_imp_fihisdata($dbh,$datafile); # 5 将当前文件基波电流数据内容入库 pqss_imp_psihisdata($dbh,$datafile); # 6 将当前文件相序电流数据内容入库 pqss_imp_unbhisdata($dbh,$datafile); # 7 将当前文件三相不平衡数据内容入库 pqss_imp_freqhisdata($dbh,$datafile); # 8 将当前文件频率数据内容入库 pqss_imp_phisdata($dbh,$datafile); # 9 将当前文件有功功率数据内容入库 pqss_imp_qhisdata($dbh,$datafile); # 10 将当前文件无功功率数据内容入库 pqss_imp_shisdata($dbh,$datafile); # 11 将当前文件视在功率数据内容入库 pqss_imp_pfhisdata($dbh,$datafile); # 12 将当前文件功率因数数据内容入库 pqss_imp_hrvhisdata($dbh,$datafile); # 13 将当前文件谐波电压含有率数据内容入库 pqss_imp_hihisdata($dbh,$datafile); # 14 将当前文件谐波电流数据内容入库 pqss_imp_thdvhisdata($dbh,$datafile); # 15 将当前文件电压总谐波畸变率数据内容入库 pqss_imp_thdihisdata($dbh,$datafile); # 16 将当前文件电流总谐波畸变率数据内容入库 pqss_imp_plthisdata($dbh,$datafile); # 17 将当前文件长时闪变数据内容入库 pqss_imp_psthisdata($dbh,$datafile); # 18 将当前文件短时闪变数据内容入库 pqss_imp_energypphisdata($dbh,$datafile); # 19 将当前文件正向有功电度数据内容入库 pqss_imp_energynphisdata($dbh,$datafile); # 20 将当前文件反向有功电度数据内容入库 pqss_imp_energypqhisdata($dbh,$datafile); # 21 将当前文件正向无功电度数据内容入库 pqss_imp_energynqhisdata($dbh,$datafile); # 22 将当前文件反向无功电度数据内容入库 pqss_imp_energypshisdata($dbh,$datafile); # 23 将当前文件正向视在电度数据内容入库 } sub get_ratedovlt{ # 从pqssbase库的表paramsunit或paramsgb获取标准电压 my ($uid) = @_; my ($ret,$dbh); my $sql = "select ratedvolt from paramsunit where unitid = cast('$uid' as varchar(10));"; $dbh = wode_db_conn($DSN_BASE); $dbh->Sql($sql); $dbh->FetchRow(); $ret = $dbh->Data; #wtlog("-->sub get_ratedovlt-->uid=$uidn"); if($ret) { #wtlog("-->sub get_ratedovlt--> 1--ret=$retn"); wode_db_close($dbh); return $ret; } else { $sql = "select ratedvolt from paramsgb where gbid = 3;"; $dbh->Sql($sql); $dbh->FetchRow(); $ret = $dbh->Data; #wtlog("-->sub get_ratedovlt-->2--ret=$retn"); wode_db_close($dbh); return $ret/sqrt(3); } } sub pqss_imp_vhisdata{ # 1 将当前文件电压数据内容入库 my ($dbh,$datafile) = @_; my ($sql,$rc,$tabname,$uid,$dva,$dvb,$dvc,$ratedvolt); $datafile =~ /.*_.*_.*_.*_((d){7,8})_.*.Dst/i; $uid = $1; # 物理id my $rectm = datatm2sqltm($data_rectime); $tabname = "vhisdata"; $data_hash{21} = nullif($data_hash{21}); $data_hash{22} = nullif($data_hash{22}); $data_hash{23} = nullif($data_hash{23}); $data_hash{24} = nullif($data_hash{24}); $data_hash{25} = nullif($data_hash{25}); $data_hash{26} = nullif($data_hash{26}); if(($data_hash{21} =~ /null/i) && ($data_hash{22} =~ /null/i) && ($data_hash{23} =~ /null/i) && ($data_hash{24} =~ /null/i) && ($data_hash{25} =~ /null/i) && ($data_hash{26} =~ /null/i) ) { wtlog("pqss load $datafile,table->$tabname no record!n"); return undef; } $ratedvolt = get_ratedovlt($uid); #wtlog("-->sub pqss_imp_vhisdata--> ratedvolt=$ratedvoltn"); $dva = $data_hash{21} - $ratedvolt; $dvb = $data_hash{23} - $ratedvolt; $dvc = $data_hash{25} - $ratedvolt; $sql = "delete from $tabname where rectime = '$rectm' and unitid = '$uid'; insert into $tabname(unitid,rectime, va,dva,angleva,vamax,vamin, vb,dvb,anglevb,vbmax,vbmin, vc,dvc,anglevc,vcmax,vcmin ) values( $uid,'$rectm', $data_hash{21},$dva,$data_hash{22},$data_hash{21},$data_hash{21}, $data_hash{23},$dvb,$data_hash{24},$data_hash{23},$data_hash{23}, $data_hash{25},$dvc,$data_hash{26},$data_hash{25},$data_hash{26} ); "; $rc = wode_sql_exec($dbh,$sql); if($rc) { my $err = $dbh->Error(); $err = $err."-->sql-->$sqln"; wtlog("$err"); return 1; } else { wtlog("pqss load $datafile,table->$tabname ok!n"); return undef; } } sub pqss_imp_fvhisdata{ # 2 将当前文件基波电压数据内容入库 my ($dbh,$datafile) = @_; my ($sql,$rc,$tabname); my $uid ; $datafile =~ /.*_.*_.*_.*_((d){7,8})_.*.Dst/i; $uid = $1; # 物理电表ID my $rectm = datatm2sqltm($data_rectime); $tabname = "fvhisdata"; $data_hash{901} = nullif($data_hash{901}); $data_hash{1001} = nullif($data_hash{1001}); $data_hash{1101} = nullif($data_hash{1101}); $data_hash{1201} = nullif($data_hash{1201}); $data_hash{1301} = nullif($data_hash{1301}); $data_hash{1401} = nullif($data_hash{1401}); if(($data_hash{901} =~ /null/i) && ($data_hash{1001} =~ /null/i) && ($data_hash{1101} =~ /null/i) && ($data_hash{1201} =~ /null/i) && ($data_hash{1301} =~ /null/i) && ($data_hash{1401} =~ /null/i) ) { wtlog("pqss load $datafile,table->$tabname no record!n"); return undef; } $sql = "delete from $tabname where rectime = '$rectm' and unitid = cast($uid as varchar(10)); insert into $tabname(unitid,rectime, fva,anglefva,fvamax,fvamin, fvb,anglefvb,fvbmax,fvbmin, fvc,anglefvc,fvcmax,fvcmin ) values( $uid,'$rectm', $data_hash{901},$data_hash{1001},$data_hash{901},$data_hash{901}, $data_hash{1101},$data_hash{1201},$data_hash{1101},$data_hash{1101}, $data_hash{1301},$data_hash{1401},$data_hash{1301},$data_hash{1301} ); "; $rc = wode_sql_exec($dbh,$sql); if($rc) { my $err = $dbh->Error(); $err = $err."-->sql-->$sqln"; wtlog("$err"); return 1; } else { wtlog("pqss load $datafile,table->$tabname ok!n"); return undef; } } sub pqss_imp_psvhisdata{ # 3 将当前文件相序电压数据内容入库 my ($dbh,$datafile) = @_; my ($sql,$rc,$tabname); my $uid ; $datafile =~ /.*_.*_.*_.*_((d){7,8})_.*.Dst/i; $uid = $1; # 物理电表ID my $rectm = datatm2sqltm($data_rectime); $tabname = "psvhisdata"; $data_hash{71} = nullif($data_hash{71}); $data_hash{75} = nullif($data_hash{75}); $data_hash{73} = nullif($data_hash{73}); if(($data_hash{71} =~ /null/i) && ($data_hash{73} =~ /null/i) && ($data_hash{75} =~ /null/i) ) { wtlog("pqss load $datafile,table->$tabname no record!n"); return undef; } $sql = "delete from $tabname where rectime = '$rectm' and unitid = cast($uid as varchar(10)); insert into $tabname(unitid,rectime, psv, zsv, nsv ) values( $uid,'$rectm', $data_hash{73}, $data_hash{71}, $data_hash{75} ); "; $rc = wode_sql_exec($dbh,$sql); if($rc) { my $err = $dbh->Error(); $err = $err."-->sql-->$sqln"; wtlog("$err"); return 1; } else { wtlog("pqss load $datafile,table->$tabname ok!n"); return undef; } } sub pqss_imp_ihisdata{ # 4 将当前文件电流数据内容入库 my ($dbh,$datafile) = @_; my ($sql,$rc,$tabname); my $uid ; $datafile =~ /.*_.*_.*_.*_((d){7,8})_.*.Dst/i; $uid = $1; # 物理电表ID my $rectm = datatm2sqltm($data_rectime); $tabname = "ihisdata"; $data_hash{11} = nullif($data_hash{11}); $data_hash{12} = nullif($data_hash{12}); $data_hash{13} = nullif($data_hash{13}); $data_hash{14} = nullif($data_hash{14}); $data_hash{15} = nullif($data_hash{15}); $data_hash{16} = nullif($data_hash{16}); if(($data_hash{11} =~ /null/i) && ($data_hash{12} =~ /null/i) && ($data_hash{13} =~ /null/i) && ($data_hash{14} =~ /null/i) && ($data_hash{15} =~ /null/i) && ($data_hash{16} =~ /null/i) ) { wtlog("pqss load $datafile,table->$tabname no record!n"); return undef; } $sql = "delete from $tabname where rectime = '$rectm' and unitid = cast($uid as varchar(10)); insert into $tabname(unitid,rectime, ia,angleia,iamax,iamin, ib,angleib,ibmax,ibmin, ic,angleic,icmax,icmin ) values( $uid,'$rectm', $data_hash{11},$data_hash{12},$data_hash{11},$data_hash{11}, $data_hash{13},$data_hash{14},$data_hash{13},$data_hash{13}, $data_hash{15},$data_hash{16},$data_hash{15},$data_hash{16} ); "; $rc = wode_sql_exec($dbh,$sql); if($rc) { my $err = $dbh->Error(); $err = $err."-->sql-->$sqln"; wtlog("$err"); return 1; } else { wtlog("pqss load $datafile,table->$tabname ok!n"); return undef; } } sub pqss_imp_fihisdata{ # 5 将当前文件基波电流数据内容入库 my ($dbh,$datafile) = @_; my ($sql,$rc,$tabname); my $uid ; $datafile =~ /.*_.*_.*_.*_((d){7,8})_.*.Dst/i; $uid = $1; # 物理电表ID my $rectm = datatm2sqltm($data_rectime); $tabname = "fihisdata"; $data_hash{301} = nullif($data_hash{301}); $data_hash{401} = nullif($data_hash{401}); $data_hash{501} = nullif($data_hash{501}); $data_hash{601} = nullif($data_hash{601}); $data_hash{701} = nullif($data_hash{701}); $data_hash{801} = nullif($data_hash{801}); if(($data_hash{301} =~ /null/i) && ($data_hash{401} =~ /null/i) && ($data_hash{501} =~ /null/i) && ($data_hash{601} =~ /null/i) && ($data_hash{701} =~ /null/i) && ($data_hash{801} =~ /null/i) ) { wtlog("pqss load $datafile,table->$tabname no record!n"); return undef; } $sql = "delete from $tabname where rectime = '$rectm' and unitid = cast($uid as varchar(10)); insert into $tabname(unitid,rectime, fia,anglefia,fiamax,fiamin, fib,anglefib,fibmax,fibmin, fic,anglefic,ficmax,ficmin ) values( $uid,'$rectm', $data_hash{301},$data_hash{401},$data_hash{301},$data_hash{301}, $data_hash{501},$data_hash{601},$data_hash{501},$data_hash{501}, $data_hash{701},$data_hash{801},$data_hash{701},$data_hash{701} ); "; $rc = wode_sql_exec($dbh,$sql); if($rc) { my $err = $dbh->Error(); $err = $err."-->sql-->$sqln"; wtlog("$err"); return 1; } else { wtlog("pqss load $datafile,table->$tabname ok!n"); return undef; } } sub pqss_imp_psihisdata{ # 6 将当前文件相序电流数据内容入库 my ($dbh,$datafile) = @_; my ($sql,$rc,$tabname); my $uid ; $datafile =~ /.*_.*_.*_.*_((d){7,8})_.*.Dst/i; $uid = $1; # 物理电表ID my $rectm = datatm2sqltm($data_rectime); $tabname = "psihisdata"; $data_hash{61} = nullif($data_hash{61}); $data_hash{65} = nullif($data_hash{65}); $data_hash{63} = nullif($data_hash{63}); if(($data_hash{61} =~ /null/i) && ($data_hash{63} =~ /null/i) && ($data_hash{65} =~ /null/i) ) { wtlog("pqss load $datafile,table->$tabname no record!n"); return undef; } $sql = "delete from $tabname where rectime = '$rectm' and unitid = cast($uid as varchar(10)); insert into $tabname(unitid,rectime, psi, zsi, nsi ) values( $uid,'$rectm', $data_hash{63}, $data_hash{61}, $data_hash{65} ); "; $rc = wode_sql_exec($dbh,$sql); if($rc) { my $err = $dbh->Error(); $err = $err."-->sql-->$sqln"; wtlog("$err"); return 1; } else { wtlog("pqss load $datafile,table->$tabname ok!n"); return undef; } } sub pqss_imp_unbhisdata{ # 7 将当前文件三相不平衡数据内容入库 my ($dbh,$datafile) = @_; my ($sql,$rc,$tabname); my $uid ; $datafile =~ /.*_.*_.*_.*_((d){7,8})_.*.Dst/i; $uid = $1; # 物理电表ID my $rectm = datatm2sqltm($data_rectime); $tabname = "unbhisdata"; $data_hash{77} = nullif($data_hash{77}); $data_hash{67} = nullif($data_hash{67}); if(($data_hash{77} =~ /null/i) && ($data_hash{67} =~ /null/i) ) { wtlog("pqss load $datafile,table->$tabname no record!n"); return undef; } $sql = "delete from $tabname where rectime = '$rectm' and unitid = cast($uid as varchar(10)); insert into $tabname(unitid,rectime, vunb,vunbmax,vunbmin, iunb,iunbmax,iunbmin ) values( $uid,'$rectm', $data_hash{77},$data_hash{77},$data_hash{77}, $data_hash{67},$data_hash{67},$data_hash{67} ); "; $rc = wode_sql_exec($dbh,$sql); if($rc) { my $err = $dbh->Error(); $err = $err."-->sql-->$sqln"; wtlog("$err"); return 1; } else { wtlog("pqss load $datafile,table->$tabname ok!n"); return undef; } } sub pqss_imp_freqhisdata{ # 8 将当前文件频率数据内容入库 my ($dbh,$datafile) = @_; my ($sql,$rc,$tabname); my $uid ; $datafile =~ /.*_.*_.*_.*_((d){7,8})_.*.Dst/i; $uid = $1; # 物理电表ID my $rectm = datatm2sqltm($data_rectime); $tabname = "freqhisdata"; $data_hash{111} = nullif($data_hash{111}); if($data_hash{111} =~ /null/i) { wtlog("pqss load $datafile,table->$tabname no record!n"); return undef; } $sql = "delete from $tabname where rectime = '$rectm' and unitid = cast($uid as varchar(10)); insert into $tabname(unitid,rectime, freq,freqmax,freqmin ) values( $uid,'$rectm', $data_hash{111},$data_hash{111},$data_hash{111} ); "; $rc = wode_sql_exec($dbh,$sql); if($rc) { my $err = $dbh->Error(); $err = $err."-->sql-->$sqln"; wtlog("$err"); return 1; } else { wtlog("pqss load $datafile,table->$tabname ok!n"); return undef; } } sub pqss_imp_phisdata{ # 9 将当前文件有功功率数据内容入库 my ($dbh,$datafile) = @_; my ($sql,$rc,$tabname); my $uid ; $datafile =~ /.*_.*_.*_.*_((d){7,8})_.*.Dst/i; $uid = $1; # 物理电表ID my $rectm = datatm2sqltm($data_rectime); $tabname = "phisdata"; $data_hash{81} = nullif($data_hash{81}); $data_hash{82} = nullif($data_hash{82}); $data_hash{83} = nullif($data_hash{83}); $data_hash{84} = nullif($data_hash{84}); if(($data_hash{81} =~ /null/i) && ($data_hash{82} =~ /null/i) && ($data_hash{83} =~ /null/i) && ($data_hash{84} =~ /null/i)) { wtlog("pqss load $datafile,table->$tabname no record!n"); return undef; } $sql = "delete from $tabname where rectime = '$rectm' and unitid = cast($uid as varchar(10)); insert into $tabname(unitid,rectime, pa,pamax,pamin, pb,pbmax,pbmin, pc,pcmax,pcmin, pt,ptmax,ptmin ) values( $uid,'$rectm', $data_hash{81},$data_hash{81},$data_hash{81}, $data_hash{82},$data_hash{82},$data_hash{82}, $data_hash{83},$data_hash{83},$data_hash{83}, $data_hash{84},$data_hash{84},$data_hash{84} ); "; $rc = wode_sql_exec($dbh,$sql); if($rc) { my $err = $dbh->Error(); $err = $err."-->sql-->$sqln"; wtlog("$err"); return 1; } else { wtlog("pqss load $datafile,table->$tabname ok!n"); return undef; } } sub pqss_imp_qhisdata{ # 10 将当前文件无功功率数据内容入库 my ($dbh,$datafile) = @_; my ($sql,$rc,$tabname); my $uid ; $datafile =~ /.*_.*_.*_.*_((d){7,8})_.*.Dst/i; $uid = $1; # 物理电表ID my $rectm = datatm2sqltm($data_rectime); $tabname = "qhisdata"; $data_hash{91} = nullif($data_hash{91}); $data_hash{92} = nullif($data_hash{92}); $data_hash{93} = nullif($data_hash{93}); $data_hash{94} = nullif($data_hash{94}); if(($data_hash{91} =~ /null/i) && ($data_hash{92} =~ /null/i) && ($data_hash{93} =~ /null/i) && ($data_hash{94} =~ /null/i)) { wtlog("pqss load $datafile,table->$tabname no record!n"); return undef; } $sql = "delete from $tabname where rectime = '$rectm' and unitid = cast($uid as varchar(10)); insert into $tabname(unitid,rectime, qa,qamax,qamin, qb,qbmax,qbmin, qc,qcmax,qcmin, qt,qtmax,qtmin ) values( $uid,'$rectm', $data_hash{91},$data_hash{91},$data_hash{91}, $data_hash{92},$data_hash{92},$data_hash{92}, $data_hash{93},$data_hash{93},$data_hash{93}, $data_hash{94},$data_hash{94},$data_hash{94} ); "; $rc = wode_sql_exec($dbh,$sql); if($rc) { my $err = $dbh->Error(); $err = $err."-->sql-->$sqln"; wtlog("$err"); return 1; } else { wtlog("pqss load $datafile,table->$tabname ok!n"); return undef; } } sub pqss_imp_shisdata{ # 11 将当前文件视在功率数据内容入库 my ($dbh,$datafile) = @_; my ($sql,$rc,$tabname); my $uid ; $datafile =~ /.*_.*_.*_.*_((d){7,8})_.*.Dst/i; $uid = $1; # 物理电表ID my $rectm = datatm2sqltm($data_rectime); $tabname = "shisdata"; $data_hash{96} = nullif($data_hash{96}); $data_hash{97} = nullif($data_hash{97}); $data_hash{98} = nullif($data_hash{98}); $data_hash{99} = nullif($data_hash{99}); if(($data_hash{96} =~ /null/i) && ($data_hash{97} =~ /null/i) && ($data_hash{98} =~ /null/i) && ($data_hash{99} =~ /null/i)) { wtlog("pqss load $datafile,table->$tabname no record!n"); return undef; } $sql = "delete from $tabname where rectime = '$rectm' and unitid = cast($uid as varchar(10)); insert into $tabname(unitid,rectime, sa,samax,samin, sb,sbmax,sbmin, sc,scmax,scmin, st,stmax,stmin ) values( $uid,'$rectm', $data_hash{96},$data_hash{96},$data_hash{96}, $data_hash{97},$data_hash{97},$data_hash{97}, $data_hash{98},$data_hash{98},$data_hash{98}, $data_hash{99},$data_hash{99},$data_hash{99} ); "; $rc = wode_sql_exec($dbh,$sql); if($rc) { my $err = $dbh->Error(); $err = $err."-->sql-->$sqln"; wtlog("$err"); return 1; } else { wtlog("pqss load $datafile,table->$tabname ok!n"); return undef; } } sub pqss_imp_pfhisdata{ # 12 将当前文件功率因数数据内容入库 my ($dbh,$datafile) = @_; my ($sql,$rc,$tabname); my $uid ; $datafile =~ /.*_.*_.*_.*_((d){7,8})_.*.Dst/i; $uid = $1; # 物理电表ID my $rectm = datatm2sqltm($data_rectime); $tabname = "pfhisdata"; $data_hash{101} = nullif($data_hash{101}); $data_hash{102} = nullif($data_hash{102}); $data_hash{103} = nullif($data_hash{103}); $data_hash{104} = nullif($data_hash{104}); if(($data_hash{101} =~ /null/i) && ($data_hash{102} =~ /null/i) && ($data_hash{103} =~ /null/i) && ($data_hash{104} =~ /null/i)) { wtlog("pqss load $datafile,table->$tabname no record!n"); return undef; } $sql = "delete from $tabname where rectime = '$rectm' and unitid = cast($uid as varchar(10)); insert into $tabname(unitid,rectime, pfa,pfamax,pfamin, pfb,pfbmax,pfbmin, pfc,pfcmax,pfcmin, pft,pftmax,pftmin ) values( $uid,'$rectm', $data_hash{101},$data_hash{101},$data_hash{101}, $data_hash{102},$data_hash{102},$data_hash{102}, $data_hash{103},$data_hash{103},$data_hash{103}, $data_hash{104},$data_hash{104},$data_hash{104} ); "; $rc = wode_sql_exec($dbh,$sql); if($rc) { my $err = $dbh->Error(); $err = $err."-->sql-->$sqln"; wtlog("$err"); return 1; } else { wtlog("pqss load $datafile,table->$tabname ok!n"); return undef; } } sub pqss_imp_hrvhisdata{ # 13 将当前文件谐波电压含有率数据内容入库 my ($dbh,$datafile) = @_; my ($sql,$rc,$tabname); my $uid ; $datafile =~ /.*_.*_.*_.*_((d){7,8})_.*.Dst/i; $uid = $1; # 物理电表ID my $rectm = datatm2sqltm($data_rectime); $tabname = "hrvhisdata"; $data_hash{902} = nullif($data_hash{902}); $data_hash{903} = nullif($data_hash{903}); $data_hash{904} = nullif($data_hash{904}); $data_hash{905} = nullif($data_hash{905}); $data_hash{906} = nullif($data_hash{906}); $data_hash{907} = nullif($data_hash{907}); $data_hash{908} = nullif($data_hash{908}); $data_hash{909} = nullif($data_hash{909}); $data_hash{910} = nullif($data_hash{910}); $data_hash{911} = nullif($data_hash{911}); $data_hash{912} = nullif($data_hash{912}); $data_hash{913} = nullif($data_hash{913}); $data_hash{914} = nullif($data_hash{914}); $data_hash{915} = nullif($data_hash{915}); $data_hash{916} = nullif($data_hash{916}); $data_hash{917} = nullif($data_hash{917}); $data_hash{918} = nullif($data_hash{918}); $data_hash{919} = nullif($data_hash{919}); $data_hash{920} = nullif($data_hash{920}); $data_hash{921} = nullif($data_hash{921}); $data_hash{922} = nullif($data_hash{922}); $data_hash{923} = nullif($data_hash{923}); $data_hash{924} = nullif($data_hash{924}); $data_hash{925} = nullif($data_hash{925}); $data_hash{1102} = nullif($data_hash{1102}); $data_hash{1103} = nullif($data_hash{1103}); $data_hash{1104} = nullif($data_hash{1104}); $data_hash{1105} = nullif($data_hash{1105}); $data_hash{1106} = nullif($data_hash{1106}); $data_hash{1107} = nullif($data_hash{1107}); $data_hash{1108} = nullif($data_hash{1108}); $data_hash{1109} = nullif($data_hash{1109}); $data_hash{1110} = nullif($data_hash{1110}); $data_hash{1111} = nullif($data_hash{1111}); $data_hash{1112} = nullif($data_hash{1112}); $data_hash{1113} = nullif($data_hash{1113}); $data_hash{1114} = nullif($data_hash{1114}); $data_hash{1115} = nullif($data_hash{1115}); $data_hash{1116} = nullif($data_hash{1116}); $data_hash{1117} = nullif($data_hash{1117}); $data_hash{1118} = nullif($data_hash{1118}); $data_hash{1119} = nullif($data_hash{1119}); $data_hash{1120} = nullif($data_hash{1120}); $data_hash{1121} = nullif($data_hash{1121}); $data_hash{1122} = nullif($data_hash{1122}); $data_hash{1123} = nullif($data_hash{1123}); $data_hash{1124} = nullif($data_hash{1124}); $data_hash{1125} = nullif($data_hash{1125}); $data_hash{1302} = nullif($data_hash{1302}); $data_hash{1303} = nullif($data_hash{1303}); $data_hash{1304} = nullif($data_hash{1304}); $data_hash{1305} = nullif($data_hash{1305}); $data_hash{1306} = nullif($data_hash{1306}); $data_hash{1307} = nullif($data_hash{1307}); $data_hash{1308} = nullif($data_hash{1308}); $data_hash{1309} = nullif($data_hash{1309}); $data_hash{1310} = nullif($data_hash{1310}); $data_hash{1311} = nullif($data_hash{1311}); $data_hash{1312} = nullif($data_hash{1312}); $data_hash{1313} = nullif($data_hash{1313}); $data_hash{1314} = nullif($data_hash{1314}); $data_hash{1315} = nullif($data_hash{1315}); $data_hash{1316} = nullif($data_hash{1316}); $data_hash{1317} = nullif($data_hash{1317}); $data_hash{1318} = nullif($data_hash{1318}); $data_hash{1319} = nullif($data_hash{1319}); $data_hash{1320} = nullif($data_hash{1320}); $data_hash{1321} = nullif($data_hash{1321}); $data_hash{1322} = nullif($data_hash{1322}); $data_hash{1323} = nullif($data_hash{1323}); $data_hash{1324} = nullif($data_hash{1324}); $data_hash{1325} = nullif($data_hash{1325}); $sql = "delete from $tabname where rectime = '$rectm' and unitid = cast($uid as varchar(10)); insert into $tabname(unitid,rectime, hrva2,hrva3,hrva4,hrva5,hrva6,hrva7,hrva8,hrva9,hrva10, hrva11,hrva12,hrva13,hrva14,hrva15,hrva16,hrva17,hrva18, hrva19,hrva20,hrva21,hrva22,hrva23,hrva24,hrva25, hrvb2,hrvb3,hrvb4,hrvb5,hrvb6,hrvb7,hrvb8,hrvb9,hrvb10, hrvb11,hrvb12,hrvb13,hrvb14,hrvb15,hrvb16,hrvb17,hrvb18, hrvb19,hrvb20,hrvb21,hrvb22,hrvb23,hrvb24,hrvb25, hrvc2,hrvc3,hrvc4,hrvc5,hrvc6,hrvc7,hrvc8,hrvc9,hrvc10, hrvc11,hrvc12,hrvc13,hrvc14,hrvc15,hrvc16,hrvc17,hrvc18, hrvc19,hrvc20,hrvc21,hrvc22,hrvc23,hrvc24,hrvc25 ) values( $uid,'$rectm', $data_hash{902}, $data_hash{903}, $data_hash{904}, $data_hash{905}, $data_hash{906}, $data_hash{907}, $data_hash{908}, $data_hash{909}, $data_hash{910}, $data_hash{911}, $data_hash{912}, $data_hash{913}, $data_hash{914}, $data_hash{915}, $data_hash{916}, $data_hash{917}, $data_hash{918}, $data_hash{919}, $data_hash{920}, $data_hash{921}, $data_hash{922}, $data_hash{923}, $data_hash{924}, $data_hash{925}, $data_hash{1102}, $data_hash{1103}, $data_hash{1104}, $data_hash{1105}, $data_hash{1106}, $data_hash{1107}, $data_hash{1108}, $data_hash{1109}, $data_hash{1110}, $data_hash{1111}, $data_hash{1112}, $data_hash{1113}, $data_hash{1114}, $data_hash{1115}, $data_hash{1116}, $data_hash{1117}, $data_hash{1118}, $data_hash{1119}, $data_hash{1120}, $data_hash{1121}, $data_hash{1122}, $data_hash{1123}, $data_hash{1124}, $data_hash{1125}, $data_hash{1302}, $data_hash{1303}, $data_hash{1304}, $data_hash{1305}, $data_hash{1306}, $data_hash{1307}, $data_hash{1308}, $data_hash{1309}, $data_hash{1310}, $data_hash{1311}, $data_hash{1312}, $data_hash{1313}, $data_hash{1314}, $data_hash{1315}, $data_hash{1316}, $data_hash{1317}, $data_hash{1318}, $data_hash{1319}, $data_hash{1320}, $data_hash{1321}, $data_hash{1322}, $data_hash{1323}, $data_hash{1324}, $data_hash{1325} ); "; $rc = wode_sql_exec($dbh,$sql); if($rc) { my $err = $dbh->Error(); $err = $err."-->sql-->$sqln"; wtlog("$err"); return 1; } else { wtlog("pqss load $datafile,table->$tabname ok!n"); return undef; } } sub pqss_imp_hihisdata{ # 14 将当前文件谐波电流数据内容入库 my ($dbh,$datafile) = @_; my ($sql,$rc,$tabname); my $uid ; $datafile =~ /.*_.*_.*_.*_((d){7,8})_.*.Dst/i; $uid = $1; # 物理电表ID my $rectm = datatm2sqltm($data_rectime); $tabname = "hihisdata"; $data_hash{302} = nullif($data_hash{302}); $data_hash{303} = nullif($data_hash{303}); $data_hash{304} = nullif($data_hash{304}); $data_hash{305} = nullif($data_hash{305}); $data_hash{306} = nullif($data_hash{306}); $data_hash{307} = nullif($data_hash{307}); $data_hash{308} = nullif($data_hash{308}); $data_hash{309} = nullif($data_hash{309}); $data_hash{310} = nullif($data_hash{310}); $data_hash{311} = nullif($data_hash{311}); $data_hash{312} = nullif($data_hash{312}); $data_hash{313} = nullif($data_hash{313}); $data_hash{314} = nullif($data_hash{314}); $data_hash{315} = nullif($data_hash{315}); $data_hash{316} = nullif($data_hash{316}); $data_hash{317} = nullif($data_hash{317}); $data_hash{318} = nullif($data_hash{318}); $data_hash{319} = nullif($data_hash{319}); $data_hash{320} = nullif($data_hash{320}); $data_hash{321} = nullif($data_hash{321}); $data_hash{322} = nullif($data_hash{322}); $data_hash{323} = nullif($data_hash{323}); $data_hash{324} = nullif($data_hash{324}); $data_hash{325} = nullif($data_hash{325}); $data_hash{502} = nullif($data_hash{502}); $data_hash{503} = nullif($data_hash{503}); $data_hash{504} = nullif($data_hash{504}); $data_hash{505} = nullif($data_hash{505}); $data_hash{506} = nullif($data_hash{506}); $data_hash{507} = nullif($data_hash{507}); $data_hash{508} = nullif($data_hash{508}); $data_hash{509} = nullif($data_hash{509}); $data_hash{510} = nullif($data_hash{510}); $data_hash{511} = nullif($data_hash{511}); $data_hash{512} = nullif($data_hash{512}); $data_hash{513} = nullif($data_hash{513}); $data_hash{514} = nullif($data_hash{514}); $data_hash{515} = nullif($data_hash{515}); $data_hash{516} = nullif($data_hash{516}); $data_hash{517} = nullif($data_hash{517}); $data_hash{518} = nullif($data_hash{518}); $data_hash{519} = nullif($data_hash{519}); $data_hash{520} = nullif($data_hash{520}); $data_hash{521} = nullif($data_hash{521}); $data_hash{522} = nullif($data_hash{522}); $data_hash{523} = nullif($data_hash{523}); $data_hash{524} = nullif($data_hash{524}); $data_hash{525} = nullif($data_hash{525}); $data_hash{702} = nullif($data_hash{702}); $data_hash{703} = nullif($data_hash{703}); $data_hash{704} = nullif($data_hash{704}); $data_hash{705} = nullif($data_hash{705}); $data_hash{706} = nullif($data_hash{706}); $data_hash{707} = nullif($data_hash{707}); $data_hash{708} = nullif($data_hash{708}); $data_hash{709} = nullif($data_hash{709}); $data_hash{710} = nullif($data_hash{710}); $data_hash{711} = nullif($data_hash{711}); $data_hash{712} = nullif($data_hash{712}); $data_hash{713} = nullif($data_hash{713}); $data_hash{714} = nullif($data_hash{714}); $data_hash{715} = nullif($data_hash{715}); $data_hash{716} = nullif($data_hash{716}); $data_hash{717} = nullif($data_hash{717}); $data_hash{718} = nullif($data_hash{718}); $data_hash{719} = nullif($data_hash{719}); $data_hash{720} = nullif($data_hash{720}); $data_hash{721} = nullif($data_hash{721}); $data_hash{722} = nullif($data_hash{722}); $data_hash{723} = nullif($data_hash{723}); $data_hash{724} = nullif($data_hash{724}); $data_hash{725} = nullif($data_hash{725}); $sql = "delete from $tabname where rectime = '$rectm' and unitid = cast($uid as varchar(10)); insert into $tabname(unitid,rectime, hia2,hia3,hia4,hia5,hia6,hia7,hia8,hia9,hia10, hia11,hia12,hia13,hia14,hia15,hia16,hia17,hia18, hia19,hia20,hia21,hia22,hia23,hia24,hia25, hib2,hib3,hib4,hib5,hib6,hib7,hib8,hib9,hib10, hib11,hib12,hib13,hib14,hib15,hib16,hib17,hib18, hib19,hib20,hib21,hib22,hib23,hib24,hib25, hic2,hic3,hic4,hic5,hic6,hic7,hic8,hic9,hic10, hic11,hic12,hic13,hic14,hic15,hic16,hic17,hic18, hic19,hic20,hic21,hic22,hic23,hic24,hic25 ) values( $uid,'$rectm', $data_hash{302}, $data_hash{303}, $data_hash{304}, $data_hash{305}, $data_hash{306}, $data_hash{307}, $data_hash{308}, $data_hash{309}, $data_hash{310}, $data_hash{311}, $data_hash{312}, $data_hash{313}, $data_hash{314}, $data_hash{315}, $data_hash{316}, $data_hash{317}, $data_hash{318}, $data_hash{319}, $data_hash{320}, $data_hash{321}, $data_hash{322}, $data_hash{323}, $data_hash{324}, $data_hash{325}, $data_hash{502}, $data_hash{503}, $data_hash{504}, $data_hash{505}, $data_hash{506}, $data_hash{507}, $data_hash{508}, $data_hash{509}, $data_hash{510}, $data_hash{511}, $data_hash{512}, $data_hash{513}, $data_hash{514}, $data_hash{515}, $data_hash{516}, $data_hash{517}, $data_hash{518}, $data_hash{519}, $data_hash{520}, $data_hash{521}, $data_hash{522}, $data_hash{523}, $data_hash{524}, $data_hash{525}, $data_hash{702}, $data_hash{703}, $data_hash{704}, $data_hash{705}, $data_hash{706}, $data_hash{707}, $data_hash{708}, $data_hash{709}, $data_hash{710}, $data_hash{711}, $data_hash{712}, $data_hash{713}, $data_hash{714}, $data_hash{715}, $data_hash{716}, $data_hash{717}, $data_hash{718}, $data_hash{719}, $data_hash{720}, $data_hash{721}, $data_hash{722}, $data_hash{723}, $data_hash{724}, $data_hash{725} ); "; $rc = wode_sql_exec($dbh,$sql); if($rc) { my $err = $dbh->Error(); $err = $err."-->sql-->$sqln"; wtlog("$err"); return 1; } else { wtlog("pqss load $datafile,table->$tabname ok!n"); return undef; } } sub pqss_imp_thdvhisdata{ # 15 将当前文件电压总谐波畸变率数据内容入库 my ($dbh,$datafile) = @_; my ($sql,$rc,$tabname); my $uid ; $datafile =~ /.*_.*_.*_.*_((d){7,8})_.*.Dst/i; $uid = $1; # 物理电表ID my $rectm = datatm2sqltm($data_rectime); $tabname = "thdvhisdata"; $data_hash{211} = nullif($data_hash{211}); $data_hash{212} = nullif($data_hash{212}); $data_hash{213} = nullif($data_hash{213}); if(($data_hash{211} =~ /null/i) && ($data_hash{212} =~ /null/i) && ($data_hash{213} =~ /null/i) ) { wtlog("pqss load $datafile,table->$tabname no record!n"); return undef; } $sql = "delete from $tabname where rectime = '$rectm' and unitid = cast($uid as varchar(10)); insert into $tabname(unitid,rectime, thdva,thdvamax,thdvamin, thdvb,thdvbmax,thdvbmin, thdvc,thdvcmax,thdvcmin ) values( $uid,'$rectm', $data_hash{211},$data_hash{211},$data_hash{211}, $data_hash{212},$data_hash{212},$data_hash{212}, $data_hash{213},$data_hash{213},$data_hash{213} ); "; $rc = wode_sql_exec($dbh,$sql); if($rc) { my $err = $dbh->Error(); $err = $err."-->sql-->$sqln"; wtlog("$err"); return 1; } else { wtlog("pqss load $datafile,table->$tabname ok!n"); return undef; } } sub pqss_imp_thdihisdata{ # 16 将当前文件电流总谐波畸变率数据内容入库 my ($dbh,$datafile) = @_; my ($sql,$rc,$tabname); my $uid ; $datafile =~ /.*_.*_.*_.*_((d){7,8})_.*.Dst/i; $uid = $1; # 物理电表ID my $rectm = datatm2sqltm($data_rectime); $tabname = "thdihisdata"; $data_hash{201} = nullif($data_hash{201}); $data_hash{202} = nullif($data_hash{202}); $data_hash{203} = nullif($data_hash{203}); if(($data_hash{201} =~ /null/i) && ($data_hash{202} =~ /null/i) && ($data_hash{203} =~ /null/i) ) { wtlog("pqss load $datafile,table->$tabname no record!n"); return undef; } $sql = "delete from $tabname where rectime = '$rectm' and unitid = cast($uid as varchar(10)); insert into $tabname(unitid,rectime, thdia,thdiamax,thdiamin, thdib,thdibmax,thdibmin, thdic,thdicmax,thdicmin ) values( $uid,'$rectm', $data_hash{201},$data_hash{201},$data_hash{201}, $data_hash{202},$data_hash{202},$data_hash{202}, $data_hash{203},$data_hash{203},$data_hash{203} ); "; $rc = wode_sql_exec($dbh,$sql); if($rc) { my $err = $dbh->Error(); $err = $err."-->sql-->$sqln"; wtlog("$err"); return 1; } else { wtlog("pqss load $datafile,table->$tabname ok!n"); return undef; } } sub pqss_imp_plthisdata{ # 17 将当前文件长时闪变数据内容入库 my ($dbh,$datafile) = @_; my ($sql,$rc,$tabname); my $uid ; $datafile =~ /.*_.*_.*_.*_((d){7,8})_.*.Dst/i; $uid = $1; # 物理电表ID my $rectm = datatm2sqltm($data_rectime); $tabname = "plthisdata"; $data_hash{241} = nullif($data_hash{241}); $data_hash{242} = nullif($data_hash{242}); $data_hash{243} = nullif($data_hash{243}); if(($data_hash{241} =~ /null/i) && ($data_hash{242} =~ /null/i) && ($data_hash{243} =~ /null/i) ) { wtlog("pqss load $datafile,table->$tabname no record!n"); return undef; } $sql = "delete from $tabname where rectime = '$rectm' and unitid = cast($uid as varchar(10)); insert into $tabname(unitid,rectime, plta, pltb, pltc ) values( $uid,'$rectm', $data_hash{241}, $data_hash{242}, $data_hash{243} ); "; $rc = wode_sql_exec($dbh,$sql); if($rc) { my $err = $dbh->Error(); $err = $err."-->sql-->$sqln"; wtlog("$err"); return 1; } else { wtlog("pqss load $datafile,table->$tabname ok!n"); return undef; } } sub pqss_imp_psthisdata{ # 18 将当前文件短时闪变数据内容入库 my ($dbh,$datafile) = @_; my ($sql,$rc,$tabname); my $uid ; $datafile =~ /.*_.*_.*_.*_((d){7,8})_.*.Dst/i; $uid = $1; # 物理电表ID my $rectm = datatm2sqltm($data_rectime); $tabname = "psthisdata"; $data_hash{231} = nullif($data_hash{231}); $data_hash{232} = nullif($data_hash{232}); $data_hash{233} = nullif($data_hash{233}); if(($data_hash{231} =~ /null/i) && ($data_hash{232} =~ /null/i) && ($data_hash{233} =~ /null/i) ) { wtlog("pqss load $datafile,table->$tabname no record!n"); return undef; } $sql = "delete from $tabname where rectime = '$rectm' and unitid = cast($uid as varchar(10)); insert into $tabname(unitid,rectime, psta, pstb, pstc ) values( $uid,'$rectm', $data_hash{231}, $data_hash{232}, $data_hash{233} ); "; $rc = wode_sql_exec($dbh,$sql); if($rc) { my $err = $dbh->Error(); $err = $err."-->sql-->$sqln"; wtlog("$err"); return 1; } else { wtlog("pqss load $datafile,table->$tabname ok!n"); return undef; } } sub pqss_imp_energypphisdata{ # 19 将当前文件正向有功电度数据内容入库 my ($dbh,$datafile) = @_; my ($sql,$rc,$tabname); my $uid ; $datafile =~ /.*_.*_.*_.*_((d){7,8})_.*.Dst/i; $uid = $1; # 物理电表ID my $rectm = datatm2sqltm($data_rectime); $tabname = "energypphisdata"; $data_hash{124} = nullif($data_hash{124}); if($data_hash{124} =~ /null/i) { wtlog("pqss load $datafile,table->$tabname no record!n"); return undef; } $sql = "delete from $tabname where rectime = '$rectm' and unitid = cast($uid as varchar(10)); insert into $tabname(unitid,rectime, totalvaluet ) values( $uid,'$rectm', $data_hash{124} ); "; $rc = wode_sql_exec($dbh,$sql); if($rc) { my $err = $dbh->Error(); $err = $err."-->sql-->$sqln"; wtlog("$err"); return 1; } else { wtlog("pqss load $datafile,table->$tabname ok!n"); return undef; } } sub pqss_imp_energynphisdata{ # 20 将当前文件反向有功电度数据内容入库 my ($dbh,$datafile) = @_; my ($sql,$rc,$tabname); my $uid ; $datafile =~ /.*_.*_.*_.*_((d){7,8})_.*.Dst/i; $uid = $1; # 物理电表ID my $rectm = datatm2sqltm($data_rectime); $tabname = "energynphisdata"; $data_hash{125} = nullif($data_hash{125}); if($data_hash{125} =~ /null/i) { wtlog("pqss load $datafile,table->$tabname no record!n"); return undef; } $sql = "delete from $tabname where rectime = '$rectm' and unitid = cast($uid as varchar(10)); insert into $tabname(unitid,rectime, totalvaluet ) values( $uid,'$rectm', $data_hash{125} ); "; $rc = wode_sql_exec($dbh,$sql); if($rc) { my $err = $dbh->Error(); $err = $err."-->sql-->$sqln"; wtlog("$err"); return 1; } else { wtlog("pqss load $datafile,table->$tabname ok!n"); return undef; } } sub pqss_imp_energypqhisdata{ # 21 将当前文件正向无功电度数据内容入库 my ($dbh,$datafile) = @_; my ($sql,$rc,$tabname); my $uid ; $datafile =~ /.*_.*_.*_.*_((d){7,8})_.*.Dst/i; $uid = $1; # 物理电表ID my $rectm = datatm2sqltm($data_rectime); $tabname = "energypqhisdata"; $data_hash{134} = nullif($data_hash{134}); if($data_hash{134} =~ /null/i) { wtlog("pqss load $datafile,table->$tabname no record!n"); return undef; } $sql = "delete from $tabname where rectime = '$rectm' and unitid = cast($uid as varchar(10)); insert into $tabname(unitid,rectime, totalvaluet ) values( $uid,'$rectm', $data_hash{134} ); "; $rc = wode_sql_exec($dbh,$sql); if($rc) { my $err = $dbh->Error(); $err = $err."-->sql-->$sqln"; wtlog("$err"); return 1; } else { wtlog("pqss load $datafile,table->$tabname ok!n"); return undef; } } sub pqss_imp_energynqhisdata{ # 22 将当前文件反向无功电度数据内容入库 my ($dbh,$datafile) = @_; my ($sql,$rc,$tabname); my $uid ; $datafile =~ /.*_.*_.*_.*_((d){7,8})_.*.Dst/i; $uid = $1; # 物理电表ID my $rectm = datatm2sqltm($data_rectime); $tabname = "energynqhisdata"; $data_hash{135} = nullif($data_hash{135}); if($data_hash{135} =~ /null/i) { wtlog("pqss load $datafile,table->$tabname no record!n"); return undef; } $sql = "delete from $tabname where rectime = '$rectm' and unitid = cast($uid as varchar(10)); insert into $tabname(unitid,rectime, totalvaluet ) values( $uid,'$rectm', $data_hash{135} ); "; $rc = wode_sql_exec($dbh,$sql); if($rc) { my $err = $dbh->Error(); $err = $err."-->sql-->$sqln"; wtlog("$err"); return 1; } else { wtlog("pqss load $datafile,table->$tabname ok!n"); return undef; } } sub pqss_imp_energypshisdata{ # 23 将当前文件正向视在电度数据内容入库 my ($dbh,$datafile) = @_; my ($sql,$rc,$tabname); my $uid ; $datafile =~ /.*_.*_.*_.*_((d){7,8})_.*.Dst/i; $uid = $1; # 物理电表ID my $rectm = datatm2sqltm($data_rectime); $tabname = "energypshisdata"; $data_hash{140} = nullif($data_hash{140}); if($data_hash{140} =~ /null/i) { wtlog("pqss load $datafile,table->$tabname no record!n"); return undef; } $sql = "delete from $tabname where rectime = '$rectm' and unitid = cast($uid as varchar(10)); insert into $tabname(unitid,rectime, totalvaluet ) values( $uid,'$rectm', $data_hash{140} ); "; $rc = wode_sql_exec($dbh,$sql); if($rc) { my $err = $dbh->Error(); $err = $err."-->sql-->$sqln"; wtlog("$err"); return 1; } else { wtlog("pqss load $datafile,table->$tabname ok!n"); return undef; } } sub wode_sql_exec{ my ($dbh,$sql) = @_; my $rc = $dbh->Sql($sql); # 执行SQL语句 if($rc) { return 1; } else { return undef; } } sub compute_meter_inx_on_load_meter{ # 计算meter id 在load_meter中的索引 my ($meter) = @_; my $i; if(1 == $load_config_flag) # 按配置 { #计算当前文件相应的电表在@load_meter的下标 for($i = 0; $i < @load_meter; $i++) { if($load_meter[$i] =~ /$meter/) { return $i; } } } elsif(0 == $load_config_flag) # 按默认全加载 { return 0; } else { wtlog("Error load_config_flag(0或1) $load_config_flag!n"); } #print "-->sub do_convert-->meter=$meter,inx=$in"; } sub do_convert{ # 转换由fetch_load_data得到的数据文件内容,%data_hash my ($load_data_file) = @_; # 不带路径的数据文件名:$load_data_file my($i,$k,$tmp,$meter,$inx,$con_flag); if($load_data_file =~ /.*_.*_.*_.*_((d){7,8})_.*.Dst/i) { $meter = $1; # 取出当前文件对应的物理电表ID ,1101001 } if($load_data_file =~ /.*_.*_.*_.*_.*_((d){14}).Dst/i) { $data_rectime = $1; #取出当前文件的日期时间 20101218235039 } $i = compute_meter_inx_on_load_meter($meter); #wtlog("-->sub do_convert--> meter $meter inx=$i, data_rectime = $data_rectimen"); $inx = $i; #当前文件相应的电表在load_meter的下标,而对于load_meter2是第几类表 get_load_convert($inx); #取出电表的转换规则,%convert_array_hash(数组的散列) foreach $k (keys %data_hash) #根据转换规则,转换 y = (x-a) × b / c { foreach $i (keys %convert_array_hash) { if($k eq $i) { #wtlog("-->sub do_convert--> convert $kn"); $con_flag = 1; #当前列需要转换 last; } } if(1 == $con_flag) { $con_flag = 0; my $a = $convert_array_hash{$k}[0]; my $b = $convert_array_hash{$k}[1]; my $c = $convert_array_hash{$k}[2]; #print "n--> sub do_convert-->k=$k,a=$a,b=$b,c=$cn"; if(0 == $c) { wtlog("--> sub do_convert-->k=$k,c=$cn"); next; } my $tmp = $data_hash{$k}; $data_hash{$k} = ($data_hash{$k} - $a) * $b / $c; $data_hash2{$k} = ($tmp - $a) * $b / $c; # %data_hash2 for debug } } } sub fetch_load_data{ #获取数据文件内容 %data_hash my ($datafile) = @_; unless(open(FP_H,$datafile)) { wtlog("--> sub fetch_load_data --> Can't open $datafile,$!n"); return undef; } my @rdtmp = <FP_H>; my $row; foreach $row (@rdtmp) { $row =~ s/^n+$//; #去掉连续空白行 my @row = split(";",join("", split " ",$row)); foreach (@row) { if(/(.*)=(.*)/) { $data_hash{$1} = $2; } } } } sub get_meters{ #从配置文件中LOAD_CONFIG配置项获得物理表信息 my @tmp; if(1 == $load_config_flag) #按配置加载物理电表 { foreach(@LOAD_INIT) { if(/load_meters*=s*(.*)/i) #加载的物理电表 { my $tmpx = $1; @load_meter = split(",",join("", split " ",$tmpx)); } } } elsif(0 == $load_config_flag) { } else { wtlog("--> sub get_meters--> error load_cong $load_config_flagn"); } } sub get_load_convert{ # 获取某个或某类物理电表的转换规则 my ($cvt_inx) = @_; my @tmp; my $inx; my $flag = 0; #wtlog("-->1 sub get_load_convert-->n"); if(1 == $load_config_flag) # 按配置,某个电表的转换规则 { $inx = $meter_convert_inx[$cvt_inx]; # CONFIG_CONVERT_* foreach (@LOAD_INIT) { if(/^[CONFIG_CONVERT_$inx]$/) #匹配转换规则 { #wtlog("-->3 sub get_load_convert--> 匹配成功n"); $flag = 1; push @tmp,$_; } elsif(/^[END_CONFIG_CONVERT_$inx]$/) { $flag = 0; } if(1 == $flag) { push @tmp,$_; } } } elsif(0 == $load_config_flag) # 默认的转换规则 { foreach (@LOAD_INIT) { if(/^[DEFAULT_CONVERT]$/) #匹配转换规则 { $flag = 1; push @tmp,$_; } elsif(/^[END_DEFAULT_CONVERT]$/) { $flag = 0; } if(1 == $flag) { push @tmp,$_; } } } else { wtlog("--> sub get_load_convert--> error load_cong $load_config_flagn"); return undef; } foreach(@tmp) { if(/(d+)s*=s*(.*)/i) { my $inx1 = $1; my $inx2 = $2; my @cont_array = split(",",join("", split " ",$inx2)); $convert_array_hash{$inx1} = [ @cont_array ]; #wtlog("-->2 sub get_load_convert--> @{$convert_array_hash{$inx1}}n"); } } return 1; } sub get_meter_convert_inx{ # #转换规则的索引号 foreach(@LOAD_INIT) { if(/meter_convert_inxs*=s*(.*)/i) { my $tmpx = $1; @meter_convert_inx = split(",",join("", split " ",$tmpx)); } } } sub get_load_date{ # 配置加载用的,获取加载的日期范围 my ($count,$dt,$tmpx); foreach(@LOAD_INIT) { if(/load_begin_dates*=s*(.*)/i) { $tmpx = $1; $load_beg_date = join("", split " ",$tmpx); } elsif(/load_end_dates*=s*(.*)/i) { $tmpx = $1; $load_end_date = join("", split " ",$tmpx); } } $count = date_between_days($load_beg_date,$load_end_date); $dt = $load_beg_date; while($count) { push @load_date,$dt; $count--; $dt = next_day($dt); } } sub get_load_data_files{ #获取数据文件 my $olddir = getcwd(); my $meter; chdir $DATAPATH; #切换到数据文件所在的目录 if($load_config_flag > 0) { foreach $meter (@load_meter) { my $dt; foreach $dt (@load_date) { my @tmp = glob("*_*_*_*_${meter}_${dt}*.[Dd][Ss][Tt]"); #匹配文件名 #my @tmp = glob("*_*_*_*_${meter}_${dt}*.dst"); #匹配文件名,windows忽略大小写,最好用上面的匹配方式 push @load_data_files, @tmp; } } } else { @load_data_files = glob("*.Dst"); } chdir $olddir; } sub get_param{ #获取配置参数 unless(open(FP_H,$pqss_data_load_init)) { wtlog("Can't open $pqss_data_load_init,$!n"); die "Can't open $pqss_data_load_init,$!n"; } my @rdtmp = <FP_H>; my $i; foreach $i (@rdtmp) { #$i =~ s/^s+//; #去掉开头空白 #$i =~ s/s+$//; #去掉结尾空白 #$i =~ s/s+/ /; #压缩中间空白 $i =~ s/#.+//; #去掉#及后面的字符 $i =~ s/^n+$//; #去掉连续空白行 push @LOAD_INIT , $i; } close(FP_H); foreach (@LOAD_INIT) { my $tmpx; if(/DBCONN_POWERs*=s*(.*)/i) { $tmpx = $1; $tmpx = join("",split " ",$tmpx); $$DSN_POWER = $tmpx; #"$'"; } elsif(/DBCONN_BASEs*=s*(.*)/i) { $tmpx = $1; $tmpx = join("",split " ",$tmpx); $DSN_BASE = $tmpx; #"$'"; } elsif(/LOGPATHs*=s*(.*)/i) { $tmpx = $1; $LOADLOG = join("",split " ",$tmpx)."\$LOADLOG"; } elsif(/OutPutPaths*=s*(.*)/i) { $tmpx = $1; $DATAPATH = join("",split " ",$tmpx); } elsif(/UnprocessedPaths*=s*(.*)/i) { $tmpx = $1; $UNDOPATH = join("",split " ",$tmpx); } elsif(/BackUpPaths*=s*(.*)/i) { $tmpx = $1; $BACKUPPATH = join("",split " ",$tmpx); } elsif(/load_config_flags*=s*(.*)/i) { $tmpx = $1; $load_config_flag = join("", split " ",$tmpx); } } } sub get_time{ my ($ret,$ye,$mon,$day) = @_; my $tc = localtime(time()); #print "ye:$ye,mon:$mon,day:$dayn"; #print "year:$tc->year,month:$tc->mon,day:$tc->mdayn"; $tc = sprintf("%4d%02d%02d%02d%02d%02d",$tc->year+1900+$ye,$tc->mon+1+$mon,$tc->mday+$day, $tc->hour, $tc->min,$tc->sec); my $tmp = substr($tc,0,4); $ret =~ s/YYYY/$tmp/gi; $tmp = substr($tc,4,2); $ret =~ s/MM/$tmp/gi; $tmp = substr($tc,6,2); $ret =~ s/DD/$tmp/gi; $tmp = substr($tc,8,2); $ret =~ s/HH/$tmp/gi; $tmp = substr($tc,10,2); $ret =~ s/MI/$tmp/gi; $tmp = substr($tc,12,2); $ret =~ s/SS/$tmp/gi; return $ret; } sub nullif{ # 若变量 $data 为 undef (但不包括0值),则返回 NULL my ($data) = @_; if($data || (length($data)>0)) { return $data; } else { return 'NULL'; } } sub datatm2sqltm # 日期格式转换 "20110322112255" -> "2011-03-22 11:22:55" { my ($tm) = @_; my $tmp; $tmp = substr($tm,0,4)."-".substr($tm,4,2)."-".substr($tm,6,2)." ". substr($tm,8,2).":".substr($tm,10,2).":".substr($tm,12,2); return $tmp; } sub swap{ # 调用 swap($c1,$c2); my ($ref1,$ref2) = @_; my $tmp; $tmp = $$ref1; $$ref1 = $$ref2; $$ref2 = $tmp; } sub date_between_days{ my ($curdate,$curdate2) = @_; my ($dt,$count_days); my $flag = 1; unless(check_date($curdate) && check_date($curdate2)) { wtlog("date error, $curdate, $curdate2n"); return undef; } if(date_cmp($curdate,$curdate2) > 0) { $dt = $curdate; $curdate = $curdate2; $curdate2 = $dt; $flag = -1; } $dt = $curdate; $count_days = 0; while(date_cmp($dt,$curdate2) <= 0) { $count_days++; $dt = next_day($dt); } return ($flag < 0)?(-$count_days):($count_days); } sub date_cmp{ my ($date1,$date2) = @_; #日期格式 20101208 my ($c1,$c2); $c1 = substr($date1,0,4); $c2= substr($date2,0,4); if($c1 < $c2) { return -1; } elsif($c1 > $c2) { return 1; } else { $c1 = substr($date1,4,2); $c2= substr($date2,4,2); if($c1 < $c2) { return -1; } elsif($c1 > $c2) { return 1; } else { $c1 = substr($date1,6,2); $c2= substr($date2,6,2); if($c1 < $c2) { return -1; } elsif($c1 > $c2) { return 1; } else { return 0; } } } } sub check_date{ my ($curdate) = @_; #20110923 my $year = substr($curdate,0,4); my $month = substr($curdate,4,2); my $day = substr($curdate,6,2); my $cur_month_day = get_last_day($curdate); #当前月的天数 unless((length($month) == 2) && (length($day) == 2)) { return undef; } $month =~ s/^0*//; #去掉前导0 $day =~ s/^0*//; if($year > 2099 || $year <= 1900 || $month > 12 || $month <= 0 || $day <= 0 || $day > $cur_month_day ) { return undef; #日期不合法 } else { return 1; } } sub next_day{ my ($curdate) = @_; #20110923 my $year = substr($curdate,0,4); my $month = substr($curdate,4,2); my $day = substr($curdate,6,2); my $cur_month_day = get_last_day($curdate); #当前月的天数 $month =~ s/^0*//; #去掉前导0 $day =~ s/^0*//; if($day >= $cur_month_day) { $day = "01"; if($month >= 12) { $month = "01"; $year = $year + 1; } else { $month = $month + 1; if($month < 10) { $month = "0".$month; } } } else { $day = $day + 1; if($month < 10) { $month = "0".$month; } if($day < 10) { $day = "0".$day; } } return $year.$month.$day; } sub get_last_day{ my ($DateVal) = @_; my $Year=substr($DateVal,0,4); my $Month=substr($DateVal,4,2); my $Day=31; if ($Month==1 or $Month==3 or $Month==5 or $Month==7 or $Month==8 or $Month==10 or $Month==12){ $Day=31; } if ($Month==4 or $Month==6 or $Month==9 or $Month==11){ $Day=30; } if ($Month==2){ #Check whether is leap year if (($Year%4==0) and ($Year%100!=0) or ($Year%400==0)){ $Day=29; } else{ $Day=28; } } return $Day; } sub wode_db_conn{ my($DSN)=@_; my $dbh; #远程连接数据库方式 #$DSN = "driver={sql server};server=172.26.35.42;DSN=wodeperl;UID=sa;PWD=wode;"; #本地连接数据库方式 #$DSN = "DSN=zz;UID=sa;PWD=sys;"; $dbh = new Win32::ODBC($DSN); if(! $dbh) { wtlog("Cannot open new ODBC, DSN = $DSN !n"); die(Win32::ODBC::Error()); } if(!$dbh->Connection()) { wtlog("Cannot connect!n"); die(Win32::ODBC::Error()); } return $dbh; } sub wode_db_close{ my($dbh)=@_; return $dbh->Close(); } sub wtlog { my ($log_str,$pathlog) = @_; unless($pathlog) { $pathlog = $LOADLOG; } open(FP_H, ">>" ,"$pathlog") or die "Log Error:Can't open $pathlog ! $!n"; print FP_H $log_str; close(FP_H); } sub print_array{ my ($vref) = @_; #print "n ---------now in print_array---------n"; for (@$vref) { print $_." "; wtlog("$_ "); } } sub debug_param_print{ #print_array(@{$LOAD_INIT[0]}); my $curdate = "20110228"; my $curdate2 = "20130134"; if(check_date($curdate)) { my $next_day = next_day($curdate); print "n-->curdate=$curdate, next_day=$next_dayn"; } else { print "n-->error date:$curdaten"; } if(date_cmp($curdate,$curdate2)<0) { print "1---- $curdate < $curdate2n"; } elsif(date_cmp($curdate,$curdate2)>0) { print "2---- $curdate > $curdate2n"; } else { print "3---- $curdate = $curdate2n"; } my $dir = getcwd(); print "--> curdir:$dirn"; my $dir2 = File::Basename::dirname($0); print "-->program path:$dir2n"; my $c1 = "11"; my $c2 = "22"; print "--> Before swap c1=$c1,c2=$c2n"; swap($c1,$c2); print "--> After swap c1=$c1,c2=$c2n"; my $ctdays = date_between_days($curdate,"20110228"); print "--> count days: $ctdaysn"; my $fam; my $k1 = 0; #--------------------------------------------------------- wtlog("$DSN_POWER-->$DSN_POWERn"); wtlog("LOADLOG-->$LOADLOGn"); wtlog("BACKUPPATH-->$BACKUPPATHn"); wtlog("load_beg_date-->$load_beg_daten"); wtlog("load_end_date-->$load_end_daten"); wtlog("load_config_flag-->$load_config_flagn"); wtlog("n-->load meters-->n"); print_array(@load_meter); wtlog("n-->load dates-->n"); print_array(@load_date); wtlog("n-->load data files $#load_data_filesn"); print_array(@load_data_files); #----------------------------------------- my $datafile = $DATAPATH."\$load_data_files[0]"; wtlog("nn-->test convert data file--> $datafilen"); fetch_load_data($datafile); for $fam (sort keys %data_hash) { wtlog(" $fam=$data_hash{$fam}n"); } do_convert($load_data_files[0]); wtlog("n-->convert rule-->n"); for $fam (sort keys %convert_array_hash) { wtlog("--$fam: @{$convert_array_hash{$fam}}n"); } wtlog("n-->after convert -->n"); foreach $fam (sort keys %data_hash) { if($data_hash2{$fam}) { $k1++; wtlog("-->$k1, key $fam-->1:$data_hash{$fam},2:$data_hash2{$fam}n"); } } #--------------------------------------------------------- my @test_arr = (1,2,"x3",4,"512"); my $x_arr = $#test_arr; print "-->x_arr = $x_arrn"; my $k; my %hash_test = ( 21 => 6000.12, 23 => 6100.50, ); $hash_test{25} = 5000; foreach $k (keys %hash_test) { print "--> key $k => $hash_test{$k}n"; } print "--> key 27 => $hash_test{27}n"; my $sqltm = datatm2sqltm("20110322112255"); print "20110322112255 -> $sqltmn"; #move("$test_move_file","$test_move_file2") or die "n $! n"; } #主程序 main();
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞1
分享
添加新评论1 条评论
2014-06-07 23:15