zoukankan      html  css  js  c++  java
  • 增量mysql 校验程序

    cd /root/check
    v_date=`date +%Y-%m-%d`
    echo $v_date
    sed -i s/v_date/$v_date/g query.scr
    cat query.scr  | while read table str
    do
    perl unload_master.pl  "$table"  "$str"
    
    perl unload_slave.pl  "$table" "$str"
    
    var1=`sum  master-$table.TXT | awk '{print $1}'`
    var2=`sum  slave-$table.TXT | awk '{print $1}'`
    echo $var1 is $var1
    echo $var2 is $var2
              if [ "$var1" -eq "$var2" ]
                 then 
                 perl  sms.pl "master $table sum is $var1 || slave $table sum is $var2"
                 else
                 perl  sms.pl "Warning--master $table sum is $var1 || slave $table sum is $var2"
            fi
    done
    cp -r -f .query.scr query.scr 
    
    
    
    2.
    slave:/root/check# cat query.scr 
    Client              lastLoginTime >=timestamp'v_date 00:00:00' and  lastLoginTime <=timestamp'v_date 23:59:59'  order by lastLoginTime desc
    ClientSignIn        lastVisitTime  >=timestamp'v_date 00:00:00'  and lastVisitTime  <=timestamp'v_date 23:59:59'  order by lastVisitTime desc
    ClientRechargeOrder updatedTime  >=timestamp'v_date 00:00:00'  and updatedTime  <=timestamp'v_date 23:59:59'  order by updatedTime desc
    
    3.
    #!/usr/bin/perl 
    use DBI;
    $db_name='zjzc';
    $ip='x.x.x.x';
    $user="xx";
    $passwd="xx";
    $dbh="";
    $dbh = DBI->connect("dbi:mysql:database=$db_name;host=$ip;port=3306",$user,$passwd) or die "can't connect to database ". DBI-errstr;
    $UNLOAD_SRC_DBCONN = DBI->connect("dbi:mysql:database=$db_name;host=$ip;port=3306",$user,$passwd) or die "can't connect to database ". DBI-errstr;
       if ( $#ARGV < 1 ){
            print "please input your table name and query condition!
    ";
                    exit(-1);
                        }
    my $table_name= "$ARGV[0]"; 
    my $str= "$ARGV[1]"; 
    my $hostSql = qq{SELECT column_name  from information_schema.columns where table_schema='$db_name' and  table_name='$table_name'};
    my $DW_DATA_DT ="";
    my $datafile="master-$table_name.TXT";
    use HTTP::Date qw(time2iso str2time time2iso time2isoz);
    
    
    my @lstRlst1;
    my @lstRlst;
    my ($COLUMN_NAME);
    my $selStmt = $dbh->prepare($hostSql);
    $selStmt->execute();
    $selStmt->bind_col(1, $COLUMN_NAME);;
    $selStmt->execute();
    while( $selStmt->fetch() ){
      print "$COLUMN_NAME
    ";
    push  (@lstRlst1 ,$COLUMN_NAME);
      }
      $selStmt->finish;
      $dbh->disconnect;
    my @lstRlst =  (@lstRlst1);
    ##########################################
    #=================全局变量区==========================#
    if ($#ARGV <0){
            print "请输入一个表名参数";
            exit(-1);
        }
    sub printlog
    {
      my ($LogInfo)= @_;
      my $CurrTime = time2iso(time());                   # 当前时间
      if(!defined($LogInfo) ){$LogInfo="";}
      my $StrLog="【${CurrTime}】 	 ${LogInfo} 
    "; 
      
      print $StrLog;
      #print LOGFILE $StrLog;
      }
      
    my $exportOracleSql="SELECT ";  #数据导出的sql
    for (my $m=0;$m<@lstRlst + 0 ;$m++){
     if  ($m != @lstRlst + 0 - 1){
      $exportOracleSql = "$exportOracleSql trim($lstRlst[$m])".", "
    }
    else{
    $exportOracleSql = "$exportOracleSql trim($lstRlst[$m])"}
    print "$exportOracleSql
    ";
    }
    my $exportOracleSql="$exportOracleSql from $db_name.$table_name where $str";
    print "$exportOracleSql
    ";
    
    sub Exportdata{
    	    
    	    printlog "开始导出数据!";
    	    my $exportsql=$exportOracleSql;
    	    if($exportsql eq "error"){
    	    	return -1;
    	    	}
    	     $stmt=$UNLOAD_SRC_DBCONN->prepare($exportsql);
    	    unless ($stmt){
    			printlog "
    执行prepare SQL语句出错:
    ";
    			printlog $DBI::errstr;
    			return -1;
    		}
    	       $stmt->execute;
    		if ($UNLOAD_SRC_DBCONN->err) {
    			printlog "
    执行SQL语句出错:
    "; 
    			printlog $DBI::errstr;
    			
    			return -1;
    		}
    	     my $row=0;
    	     my $size=0;
    	     my $curtime;
    
    	     
    	     
    	     my $writeflagsql;
    	     my $tmpstr="";
    	     $row=0;
    	     my $m=0;              
     open(DATAFILE,">", $datafile) || die (print "Open DATA file failed!!!
    ");
    	     while(my $Rows = $stmt->fetchrow_arrayref){
    	     	$m=0;
    	     	$tmpstr="";
    	     	foreach(@$Rows){
    	     		$tmpstr=$tmpstr.$Rows->[$m]."|";
    	     		$m++;
    	     	}
    	     	print DATAFILE $tmpstr.$DW_DATA_DT."
    ";
    	     	$row++;
    	     	if(($row%10000) == 0){
    	     		printlog "已导出数据$row条!";
    	     	}	     	     	
    	    }
         	
            	$stmt->finish;
            #	print FLAGFILE $datafile,"
    ";
            #	print FLAGFILE $row,"
    ";
            	close(DATAFILE);
            #  close(FLAGFILE);
    
            	$curtime=time2iso(time());
              printlog "数据已成功导出!";
              printlog "一共导出数据${row}条";
                    
              return 1;	
    	
    	}
    Exportdata

  • 相关阅读:
    thinkphp5 tp5 命名空间 报错 Namespace declaration statement has to be the very first statement in the script
    开启 php 错误 提示 php-fpm 重启 nginx 500错误 解决办法 wdlinux lnmp 一键包 php脚本无法解析执行
    js 设置 cookie 定时 弹出层 提示层 下次访问 不再显示 弹窗 getCookie setCookie setTimeout
    php 二维数组 转字符串 implode 方便 mysql in 查询
    nginx 重启 ps -ef|grep nginx kill -HUP 主进程号
    jquery bootstrap help-block input 表单 提示 帮助 信息
    jquery 倒计时 60秒 短信 验证码 js ajax 获取
    jQuery如何获取同一个类标签的所有的值 遍历
    linux下C语言文件操作相关函数
    gcc,gdb用法
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13351607.html
Copyright © 2011-2022 走看看