From: kirovs <ki...@us...> - 2007-09-14 18:04:59
|
Update of /cvsroot/cogs/ensupdate In directory sc8-pr-cvs4.sourceforge.net:/tmp/cvs-serv13804 Modified Files: load_ensembl.pl Log Message: added mysql connect params, overflow, bugs Index: load_ensembl.pl =================================================================== RCS file: /cvsroot/cogs/ensupdate/load_ensembl.pl,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** load_ensembl.pl 12 Dec 2005 14:29:42 -0000 1.5 --- load_ensembl.pl 14 Sep 2007 18:04:55 -0000 1.6 *************** *** 6,16 **** my $drop=shift; my $clean=shift; ! chdir($locdir); my (%db,@dbs); my $user=$ENV{ENS_ADMIN}; ! my $pass=$ENV{ENS_PASS}; my $host=$ENV{ENS_HOST}; my $sock=$ENV{ENS_SOCK}; open (MSQLV,'mysql -V|')||die 'Mysql crashed or no mysql installed'; my $msqlv=<MSQLV>; close MSQLV; --- 6,20 ---- my $drop=shift; my $clean=shift; ! chdir($locdir)||die $locdir; my (%db,@dbs); my $user=$ENV{ENS_ADMIN}; ! my $pass=$ENV{ENS_ADMINPASS}; my $host=$ENV{ENS_HOST}; my $sock=$ENV{ENS_SOCK}; + my $port=$ENV{ENS_PORT}; + my $overfl=$ENV{ENS_OVERFLOW}; + my $msqldir=$ENV{MYSQL_DATA}; open (MSQLV,'mysql -V|')||die 'Mysql crashed or no mysql installed'; + if ($overfl) { $avail=check_for_overflow($msqldir) ; } my $msqlv=<MSQLV>; close MSQLV; *************** *** 21,29 **** my $cs = "dbi:mysql:database=$sid;host=$host;"; $cs .= "mysql_socket=$sock;" if ($sock); my $dbh= DBI->connect($cs,$user,$pass) or die "connecting: $DBI::errstr" ; #Special table with every DB that loads, should be created in advance ! my $chdb=$dbh->prepare("use ensembl_databases")||die "Couldn't prepare- recording the DB\n"; ! my $list=$dbh->prepare("insert into ens_dbnames (db_name, version,current) values (?,?,'yes')") ||die "Couldn't prepare- recording the DB list\n",$DBI::errstr; ! my $updatec=$dbh->prepare("update ens_dbnames set current='no' where db_name=?") ||die "Couldn't prepare- recording the DB list\n",$DBI::errstr; my $droplist=$dbh->prepare("select db_name from ens_dbnames where current='yes'") ||die "Couldn't prepare- reading the DB list\n",$DBI::errstr; $droplist->execute; --- 25,33 ---- my $cs = "dbi:mysql:database=$sid;host=$host;"; $cs .= "mysql_socket=$sock;" if ($sock); + $cs .= "port=$port;" if ($port); my $dbh= DBI->connect($cs,$user,$pass) or die "connecting: $DBI::errstr" ; #Special table with every DB that loads, should be created in advance ! ! my $droplist=$dbh->prepare("select db_name from ens_dbnames where current='yes'") ||die "Couldn't prepare- reading the DB list\n",$DBI::errstr; $droplist->execute; *************** *** 47,61 **** my ($obsol)=grep(/$dbname/,@dbs); my $str=$dbh->prepare("create database $db") ||die "Couldn't create DB $db\n"; #Should we check first and drop it if exists? $chdb->execute ||die $DBI::errstr,"\n"; $str->execute ||die "Couldn't create DB $db\n ",$DBI::errstr; $list->execute($db,$ver) ||die "Couldn't record the database\n",$DBI::errstr; chdir($db); system('pwd'); my $ddlfile=($majormver<5)?"$db.mysql40_compatible.sql":"$db.sql"; ! my $sarg="mysql -h $host -u $user -p$pass $db <$ddlfile"; print "$sarg\n"; system($sarg)==0 ||die "Failed to create schema for $db\n"; ! my $load="mysqlimport -L -h $host -u $user -p$pass $db *.txt.table"; ! system($load)==0||die"Couldn't import\n"; $dbh= DBI->connect($cs,$user,$pass) or die "connecting: $DBI::errstr" ; if ($obsol) { --- 51,81 ---- my ($obsol)=grep(/$dbname/,@dbs); my $str=$dbh->prepare("create database $db") ||die "Couldn't create DB $db\n"; #Should we check first and drop it if exists? + my $list=$dbh->prepare("insert into ens_dbnames (db_name, version,current) values (?,?,'yes')") ||die "Couldn't prepare- recording the DB list\n",$DBI::errstr; + my $chdb=$dbh->prepare("use ensembl_databases")||die "Couldn't prepare- recording the DB\n"; $chdb->execute ||die $DBI::errstr,"\n"; $str->execute ||die "Couldn't create DB $db\n ",$DBI::errstr; $list->execute($db,$ver) ||die "Couldn't record the database\n",$DBI::errstr; + my $updatec=$dbh->prepare("update ens_dbnames set current='no' where db_name=?") ||die "Couldn't prepare- recording the DB list\n",$DBI::errstr; chdir($db); system('pwd'); my $ddlfile=($majormver<5)?"$db.mysql40_compatible.sql":"$db.sql"; ! $up=$pass ? "-u $user -p$pass " : "-u $user"; ! my $sarg="mysql -h $host $up $db <$ddlfile"; ! my $avail; ! if ($overfl) { $avail=check_for_overflow($msqldir) ; } ! if (($avail<25)&&($msqldir)) { ! print "Using $overfl overflow\n"; ! system("mv $msqldir/$db $overfl")==0||die "Could not move to $overfl $?:$!"; ! system("ln -s $overfl/$db $msqldir")==0||die "Could not move to $overfl $?:$!"; ! } print "$sarg\n"; system($sarg)==0 ||die "Failed to create schema for $db\n"; ! open (DATF, "ls *.txt.table| wc -l|")||die; ! my $cntd=<DATF>; ! close DATF; ! if ($cntd>0) { ! my $load="mysqlimport -L -h $host $up $db *.txt.table"; ! system($load)==0||die"Couldn't import\n$load\n"; ! } $dbh= DBI->connect($cs,$user,$pass) or die "connecting: $DBI::errstr" ; if ($obsol) { *************** *** 77,78 **** --- 97,113 ---- close DBS; print "$count databases loaded successfully\n"; + + sub check_for_overflow { + my $storage=shift; + unless ($storage) { die "Do not know where to overflow to, see that environment var MYSQL_DATA is set"; } + open (SZ,"df -h $storage|")||die "$?:$!"; + my $head=<SZ>; + my $where=<SZ>; + my $dat=<SZ>; + $dat=~s/^[\s\t]+//; + my ($size,$used,$avail,$mount)=split(/[\t\s]+/,$dat); + unless ($avail=~/G$/) { return 0}; + $avail=~s/\D//g; + return $avail; + } + |