111 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Perl
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			111 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Perl
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/env perl
 | |
| #===============================================================================
 | |
| #
 | |
| #         FILE: remodel_db_series_eps
 | |
| #
 | |
| #        USAGE: ./remodel_db_series _eps
 | |
| #
 | |
| #  DESCRIPTION: Script to perform the steps necessary to remodel the series
 | |
| #  		information in the hpr_hpr database. We want to have
 | |
| #  		a many-to-many relationship between episodes and series.
 | |
| #
 | |
| #      OPTIONS: ---
 | |
| # REQUIREMENTS: ---
 | |
| #         BUGS: ---
 | |
| #        NOTES: This code is extremely trivial. It could be done just as well
 | |
| #               with plain SQL. However, having a script will potentially
 | |
| #               allow other things to be done during the table load, such as
 | |
| #               reading other series associations from a file.
 | |
| #       AUTHOR: Dave Morriss (djm), Dave.Morriss@gmail.com
 | |
| #      VERSION: 0.0.1
 | |
| #      CREATED: 2015-06-26 12:30:27
 | |
| #     REVISION: 2015-06-26 15:28:12
 | |
| #
 | |
| #===============================================================================
 | |
| 
 | |
| use 5.010;
 | |
| use strict;
 | |
| use warnings;
 | |
| use utf8;
 | |
| 
 | |
| use YAML::Syck;
 | |
| use DBI;
 | |
| 
 | |
| #
 | |
| # Version number (manually incremented)
 | |
| #
 | |
| our $VERSION = '0.0.1';
 | |
| 
 | |
| #
 | |
| # Script and directory names
 | |
| #
 | |
| ( my $PROG = $0 ) =~ s|.*/||mx;
 | |
| ( my $DIR  = $0 ) =~ s|/?[^/]*$||mx;
 | |
| $DIR = '.' unless $DIR;
 | |
| 
 | |
| #-------------------------------------------------------------------------------
 | |
| # Declarations
 | |
| #-------------------------------------------------------------------------------
 | |
| #
 | |
| # Constants and other declarations
 | |
| #
 | |
| my $basedir    = "$ENV{HOME}/HPR/Database";
 | |
| my $configfile = "$basedir/.hpr_db.yml";
 | |
| 
 | |
| my ( $dbh, $sth1, $sth2, $sth3, $sth4, $h1, $h2, $rv );
 | |
| 
 | |
| #
 | |
| # Enable Unicode mode
 | |
| #
 | |
| binmode STDOUT, ":encoding(UTF-8)";
 | |
| binmode STDERR, ":encoding(UTF-8)";
 | |
| 
 | |
| #
 | |
| # Load configuration data
 | |
| #
 | |
| my %config = %{ LoadFile($configfile) };
 | |
| 
 | |
| #-------------------------------------------------------------------------------
 | |
| # Connect to the database
 | |
| #-------------------------------------------------------------------------------
 | |
| my $dbname = $config{database}->{name};
 | |
| my $dbuser = $config{database}->{user};
 | |
| my $dbpwd  = $config{database}->{password};
 | |
| $dbh
 | |
|     = DBI->connect( "dbi:mysql:dbname=$dbname", $dbuser, $dbpwd,
 | |
|     { AutoCommit => 1 } )
 | |
|     or die $DBI::errstr;
 | |
| 
 | |
| #
 | |
| # Enable client-side UTF8
 | |
| #
 | |
| $dbh->{mysql_enable_utf8} = 1;
 | |
| 
 | |
| #-------------------------------------------------------------------------------
 | |
| # Set up the SQL and query the 'eps' table since everything has a series, even
 | |
| # if it's 0
 | |
| #-------------------------------------------------------------------------------
 | |
| $sth1 = $dbh->prepare(q{SELECT * FROM eps ORDER BY id DESC});
 | |
| $sth2 = $dbh->prepare(q{INSERT INTO series_eps VALUES(?,?)});
 | |
| 
 | |
| $sth1->execute;
 | |
| if ( $dbh->err ) {
 | |
|     die $dbh->errstr;
 | |
| }
 | |
| 
 | |
| #-------------------------------------------------------------------------------
 | |
| # Walk the entire 'eps' table simply adding rows into the 'series_eps' table
 | |
| #-------------------------------------------------------------------------------
 | |
| while ( $h1 = $sth1->fetchrow_hashref ) {
 | |
|     $sth2->execute($h1->{series},$h1->{id});
 | |
|     if ( $dbh->err ) {
 | |
|         die $dbh->errstr;
 | |
|     }
 | |
| }
 | |
| 
 | |
| exit;
 | |
| 
 | |
| # vim: syntax=perl:ts=8:sw=4:et:ai:tw=78:fo=tcrqn21:fdm=marker
 | |
| 
 | |
| 
 |