diff --git a/misc-scripts/production_database/scripts/populate_species_meta.pl b/misc-scripts/production_database/scripts/populate_species_meta.pl index 0d18a40d938ccc438381440a332a0e42169f251f..a3b1d2bda1e5a9fc6b6b652fd3863f85d3b8ccae 100644 --- a/misc-scripts/production_database/scripts/populate_species_meta.pl +++ b/misc-scripts/production_database/scripts/populate_species_meta.pl @@ -17,6 +17,7 @@ sub run { my $databases = $self->databases(); foreach my $db (@{$databases}) { $self->v('Processing %s', $db); + $self->_backup($db); $self->_meta($db); $self->v('Done'); } @@ -181,6 +182,39 @@ sub _meta { return; } +sub _backup { + my ($self, $db) = @_; + my $o = $self->{opts}; + + if(! $o->{backup}) { + $self->v('Skipping backup'); + return; + } + + my $increment = 0; + my $core = $self->_core_dba($db); + my $table; + while(1) { + $table = sprintf("meta_bak_%d", $increment); + my $res = $core->dbc()->sql_helper()->execute_simple( + -SQL => 'show databases like ?', -PARAMS => [$table]); + if(scalar(@{$res})) { + next; + } + last; #if no results then name is free + } + + $self->v('Backing up to %s', $table); + $core->dbc()->do(sprintf('create table %s like meta', $table)); + $self->v('Copying data from meta to %s', $table); + $core->dbc()->do(sprintf('insert into table %s select * from meta', $table)); + $self->v('Done backup'); + + return; +} + + + sub _db_to_taxon { my ($self, $db) = @_;