use Modern::Perl; use IO::Uncompress::Gunzip qw(gunzip $GunzipError); use FindBin qw($Bin); use Config::Auto; use Data::Printer; use DBI; use lib "$Bin/../lib"; # warn $Bin; exit; use vars qw($SQL_FOR_TABLE $FOREIGN_KEYS $VIEWS); require "$Bin/../setup/lims.sql"; ####### WHICH DB TO WIPEOUT & RECREATE: say "THIS WILL DROP AND RE-CREATE DATABASE"; say "Name of db:"; my $DB = ; # say $DB; exit; chomp $DB; $ENV{CENTRE} = $DB; # warn $DB; # exit; my $cfg = Config::Auto::parse("$Bin/../config/lims_config.pl", format => 'perl'); #p $cfg; exit; # need admin user for views, etc my $userid = $cfg->{settings}->{admin_db_user}; my $pwd = $cfg->{settings}->{admin_db_pwd}; my $dsn = $cfg->{dbh_params}->[0]; # p $userid; p $pwd; p $dsn; exit; my $dbh = DBI->connect( $dsn, $userid, $pwd, { RaiseError => 1, PrintError => 0 } ); $dbh->do($_) for ( qq!DROP DATABASE IF EXISTS `$DB`!, qq!CREATE DATABASE `$DB`!, qq!USE `$DB`!, ); # tables: foreach my $tbl( sort keys %$SQL_FOR_TABLE ) { say $tbl; $dbh->do( qq!DROP TABLE IF EXISTS $tbl! ); $dbh->do( $SQL_FOR_TABLE->{$tbl} ); } # views: foreach my $view( keys %$VIEWS ) { say $view; $dbh->do( $VIEWS->{$view} ); } # foreign keys: foreach my $fk( sort keys %$FOREIGN_KEYS ) { say $fk; $dbh->do($FOREIGN_KEYS->{$fk}); } $dbh->disconnect; gunzip "$Bin/../setup/core_data.gz" => "$Bin/core_data" # retains original .gz file || die "gunzip failed: $GunzipError\n"; system("mysql -u $userid -p$pwd $DB < $Bin/core_data"); unlink "$Bin/core_data";