# main_type1.pl # 处理main_type1表程序 use strict; use DBI; my(%t,$n,@fld,@rec,@rec1,$pref); # 连接数据库 $$pref{dsn} = "DBI:mysql:host=localhost;database=cookbook"; $$pref{dbh} = DBI->connect($$pref{dsn}, "cbuser", "cbpass") or die "Cannot connect to server\n"; ##$$pref{dsn} = "DBI:mysql:host=SERVER.msc.local;database=msc"; ##$$pref{dbh} = DBI->connect($$pref{dsn}, "mscuser", "mscpass") or die "Cannot connect to server\n"; $$pref{dbh}->do("SET NAMES utf8"); if(!$$pref{dbh}){ print "SQL read ERROR!\n"; exit; } $t{sth} = $$pref{dbh}->prepare("SELECT id,gname_id,maker_id FROM main_type1"); $t{sth}->execute; while ( @rec = $t{sth}->fetchrow_array ) { if ( $rec[1] == 0 or $rec[1] =~ /\D/ ) { $t{gname_id}{$rec[0]} = 1; } else { $t{gname_id}{$rec[0]} = $rec[1]; } if ( $rec[2] == 0 or $rec[2] =~ /\D/ ) { $t{maker_id}{$rec[0]} = 1; } elsif ( $rec[2] == 1 ) { $t{maker_id}{$rec[0]} = 419; } else { $t{maker_id}{$rec[0]} = $rec[2]; } push(@rec1,$rec[0]); } $t{sth}->finish; for $n ( 0 .. $#rec1 ) { $t{id} = $rec1[$n]; $t{g1} = $t{gname_id}{$t{id}}; $t{m1} = $t{maker_id}{$t{id}}; # 更新gname_id $t{sql} = 'UPDATE main_type1 SET gname_id = "'; $t{sql} .= $t{g1} . '" WHERE id = '; $t{sql} .= $t{id}; $t{DO} = $$pref{dbh}->do($t{sql}); # 更新maker_id $t{sql} = 'UPDATE main_type1 SET maker_id = "'; $t{sql} .= $t{m1} . '" WHERE id = '; $t{sql} .= $t{id}; $t{DO} = $$pref{dbh}->do($t{sql}); } # 关闭数据库 $$pref{dbh}->disconnect;