Chinaunix首页 | 论坛 | 博客
  • 博客访问: 440398
  • 博文数量: 279
  • 博客积分: 4467
  • 博客等级: 上校
  • 技术积分: 2830
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-03 14:43
文章分类

全部博文(279)

文章存档

2013年(1)

2012年(39)

2011年(35)

2009年(29)

2008年(131)

2007年(44)

分类:

2008-02-13 14:07:21

##sql2local
##usage:
#sql2local_direct '127.0.0.1' 'root' '123trinity' 'wdms' 'XF_FRMPOSSALEH' 'INBOUND_XF_FRMPOSSALEH' 1;

#!/usr/bin/perl

require '/opt/ws1/run_control.pl';
my $srcip=$ARGV[0];
my $srcuserid=$ARGV[1];
my $srcpass=$ARGV[2];
my $srcdatabase=$ARGV[3];
my $srctable=$ARGV[4];
my $localtable=$ARGV[5];
my $jobid=$ARGV[6];
my $size=@ARGV;
if ( $size != 7)
{
  print "Usage: sql2local_direct.pl \n";
  exit(1);
}
if (!($jobid=~m/\d+/))
{
   print "Error: please input jobid\n";
   exit(1);
}
my $runid=get_runid($jobid);
my $createtime=get_datetime();
my $record_counter=0;

my $stagedbh=DBI->connect("DBI:mysql:database=$srcdatabase;host=$srcip","$srcuserid","$srcpass",{'RaiseError'=>1, 'AutoCommit' => 0}) or die "cannot connect!\n";
$stagedbh->do("SET NAMES 'utf8'");
eval{
$sth=$stagedbh->prepare(qq/select * from $srctable/);
$sth->execute();
#$stagedbh->do(qq/delete from $srctable/);

$stagedbh->do("use $localdatabase");
$stagedbh->do("SET NAMES 'utf8'");
$field_count=$stagedbh->selectrow_array(qq/select count(*) from database_field_map where src_tables_name="$localtable"/);
#print "localtable:$localtable\n";

#print "field_count:$field_count\n";

$insert_statement=gen_insert($localtable,$field_count);
#print "insert_statement:$insert_statement\n";

$inh=$stagedbh->prepare("$insert_statement");
#$inh=$stagedbh->prepare("insert into $localtable values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");

while(@row=$sth->fetchrow_array){
#sleep(10);

#print "$row[0],$row[1],$row[2],$row[3],$row[4],$row[5],$row[6],$row[7],$row[8],]";

#print "start insert\n";

for (my $i=0;$i<$field_count;$i++){
#print "push:\$row[$i]";

push(@rows,"$row[$i]");
}
push(@rows,"$jobid");
push(@rows,"$runid");
push(@rows,"$record_counter");
push(@rows,"$createtime");
push(@rows,0);

$inh->execute(@rows);
#$inh->execute($row[0],$row[1],$row[2],,$row[3],$row[4],$row[5],$row[6],$row[7],$row[8],,$row[9],$row[10],$row[11],$row[12],$row[13],$row[14],,$row[15],$row[16],$jobid,$runid,$record_counter,$createtime,0);

$record_counter++;
}
$stagedbh->commit();
};

if($@){
print "Warning: Transaction aborted:$@";
$stagedbh->rollback();
}
$sth->finish();
$inh->finish();

$stagedbh->disconnect();

阅读(231) | 评论(0) | 转发(0) |
0

上一篇:mrtg

下一篇:inbound to outbound(transcorm_msc)

给主人留下些什么吧!~~