#!/usr/bin/perl # description: change the directory path of movabletype # use DBI; my $dbh = DBI->connect("DBI:Pg:dbname=databasename","username","password", {AutoCommit => 1}) || warn $DBI::errstr; my $statement = 'select to_date(mt_entry.entry_created_on, \'YYYY/MM\') as entry_created_on, mt_category.category_label, mt_entry.entry_title, mt_entry.entry_basename from mt_placement, mt_entry, mt_category where mt_placement.placement_entry_id = mt_entry.entry_id and mt_category.category_id = mt_placement.placement_category_id order by mt_placement.placement_category_id'; my $sth = $dbh->prepare("$statement"); $sth->execute; while (my $ref = $sth->fetchrow_hashref){ my($year, $month) = (split(/-/, $ref->{entry_created_on}))[0,1]; $ref->{entry_created_on} = "$year/$month/"; $ref->{category_label} = lc($ref->{category_label}); if ($ref->{category_label} eq 'linuxコマンド(a〜i)' ) { $ref->{category_label} = 'linuxai'; } elsif ($ref->{category_label} eq 'linuxコマンド(j〜q)' ) { $ref->{category_label} = 'linuxjq'; } elsif ($ref->{category_label} eq 'linuxコマンド(r〜z)' ) { $ref->{category_label} = 'linuxrz'; } elsif ($ref->{category_label} eq 'シェルスクリプト' ) { $ref->{category_label} = 'cat24'; } elsif ($ref->{category_label} eq 'ネットワーク設定' ) { $ref->{category_label} = 'cat36'; } elsif ($ref->{category_label} eq 'メール' ) { $ref->{category_label} = 'cat28'; } elsif ($ref->{category_label} eq '配列' ) { $ref->{category_label} = 'cat34'; } elsif ($ref->{category_label} eq '文字列操作' ) { $ref->{category_label} = 'cat37'; } elsif ($ref->{category_label} eq 'viエディター' ) { $ref->{category_label} = 'vi'; } elsif ($ref->{category_label} eq 'その他' ) { $ref->{category_label} = 'cat14'; } elsif ($ref->{category_label} eq 'セキュリティ' ) { $ref->{category_label} = 'cat13'; } #print "$ref->{entry_title}\t"; $ref->{old_path} = '/movabletype/archives/' . $ref->{entry_created_on} . $ref->{entry_basename} . '.html'; $ref->{new_path} = 'http://www.ksknet.net/' . $ref->{category_label} . '/' . $ref->{entry_basename} . '.html'; #print "$ref->{new_path}\n"; print "Redirect permanent " . $ref->{old_path} . ' ' . $ref->{new_path} . "\n"; } $sth->finish(); $dbh->disconnect || warn $dbh->errsr;