Mercurial > hg > LGDataverses
view scripts/migration/versions_source_ @ 10:a50cf11e5178
Rewrite LGDataverse completely upgrading to dataverse4.0
| author | Zoe Hong <zhong@mpiwg-berlin.mpg.de> |
|---|---|
| date | Tue, 08 Sep 2015 17:00:21 +0200 |
| parents | |
| children |
line wrap: on
line source
#!/usr/bin/perl # TODO: # the script still has the namespaces "1902.1" and "10.7910" hard-coded, # to identifies the "local" studies. my $url = shift @ARGV; use DBI; my $username = "xxxxx"; my $password = 'xxxxx'; my $database = "xxxxx"; my $dbh = DBI->connect("DBI:Pg:dbname=$database;host=$host",$username,$password); unless ( -d "ddi" ) { mkdir "ddi"; } my $sth; $sth = $dbh->prepare(qq {SELECT s.id, s.authority, s.studyid, v.alias FROM study s, vdc v WHERE s.owner_id = v.id}); $sth->execute(); my $sid; $studycounter = 0; $extraversioncounter = 0; $versioncounter = 0; while ( @foo = $sth->fetchrow() ) { $sid = $foo[0]; $authority = $foo[1]; $studyid = $foo[2]; $dvalias = $foo[3]; unless ($authority eq "1902.1" || $authority =~/^10\.7910/ ) { next; } unless ( -d "ddi/$dvalias" ) { mkdir "ddi/$dvalias"; } my $sth1; $sth1 = $dbh->prepare(qq {SELECT versionnumber,versionstate FROM studyversion v WHERE study_id=$sid}); $sth1->execute(); my $vn; $localcounter = 0; while ( @bar = $sth1->fetchrow() ) { $vn = $bar[0]; $vstate = $bar[1]; if ($vstate eq "RELEASED") { print $dvalias . "\t" . $sid . "\t" . $authority . "/" . $studyid . "/export_ddi.xml\n"; } else { print STDERR "executing: wget -O ddi/" . $dvalias . "/" . $sid . "-" . $vn . ".xml '" . $url . "?studyId=" . $sid . "&versionNumber=" . $vn . "'\n"; system "wget -O ddi/" . $dvalias . "/" . $sid . "-" . $vn . ".xml '" . $url . "?studyId=" . $sid . "&versionNumber=" . $vn . "'\n"; $versioncounter++; $localcounter++; } } $sth1->finish; $studycounter++; $extraversioncounter++ if $localcounter; unless ($studycounter % 1000) { print STDERR "\n" . $studycounter . " studies processed.\n"; print STDERR $extraversioncounter . " had versions other than released;\n"; print STDERR "Total " . $versioncounter . " versions processed.\n"; } } $sth->finish; $dbh->disconnect; exit 0;
