#! /usr/bin/perl -w # This script use to copy the parameters from the dataset_name1 to # dataset_name2 in dataset_parameters table # you need to pass the dataset_name1 and dataset_name2. xye use strict; use DBI; no warnings 'uninitialized'; my $dbh=connect_user_login(); print "Give me the dataset_name1 that already had dataset_parameters in the DB:\n"; my $dataset_name1=<>; chomp($dataset_name1); print $dataset_name1,"\n"; my $statement="select dataset_id from dataset where dataset_name=?"; my $sth=$dbh->prepare($statement); my $dataset_id_old; $sth-> execute($dataset_name1); $dataset_id_old=$sth->fetchrow_array(); print "$dataset_id_old\n"; print "Give me the dataset_name2 that didn't have dataset_parameters in the DB:\n"; my $dataset_name2=<>; chomp($dataset_name2); print $dataset_name2,"\n"; my $dataset_id_new; $sth-> execute($dataset_name2); $dataset_id_new=$sth->fetchrow_array(); print "$dataset_id_new\n"; $sth->finish(); print "$dataset_id_old\n"; my @d_para_col=get_column($dbh,'dataset_parameters'); shift @d_para_col; pop @d_para_col; my $d_para_list=join(',',@d_para_col); my $statement2="select ".$d_para_list." from dataset_parameters where dataset_id=".$dataset_id_old; print $statement2,"\n"; my $sth2=$dbh->prepare($statement2); $sth2->execute(); my $count=0; while(my @record=$sth2->fetchrow_array()) { if (@record) {$record[0]=$dataset_id_new; my $values=join("','",@record); $values="'".$values."'"; my $statement3="insert into dataset_parameters (". $d_para_list.") values (".$values.")"; print $statement3,"\n"; my $sth3=$dbh->prepare($statement3); #$sth3->execute(); $count++; $sth3->finish(); } } $sth2->finish(); print "we already added $count records into the db.\n"; $dbh->disconnect(); sub get_column { my ($dbh, $table) = @_; my $sth = $dbh->prepare("describe $table"); $sth->execute(); my @column; while (my @tmp = $sth -> fetchrow_array()) {push @column,$tmp[0];} $sth -> finish(); return @column; } sub connect_user_login { my $host = "localhost"; my $user = "xye"; my $passw = "whoi2008"; my $database = "bco_metadata_test"; my $dsh = "DBI:mysql:host=$host;database=$database"; my $dbh = DBI->connect($dsh,$user,$passw,{RaiseError=>0,PrintError=>0,autocommit=>0}) or die $DBI::errstr; return $dbh; }