]> git.donarmstrong.com Git - infobot.git/blob - scripts/fixbadchars.pl
dunno
[infobot.git] / scripts / fixbadchars.pl
1 #!/usr/bin/perl -w
2
3 use DBI;
4
5 my $dsn = "DBI:mysql:infobot:localhost";
6 my $dbh = DBI->connect( $dsn, "USERNAME", "PASSWORD" );
7
8 my @factkey;
9 my %factval;
10 my $query;
11 my $regex = '\\\\([\_\%])';
12
13 $query = "SELECT factoid_key,factoid_value from factoids";
14 my $sth = $dbh->prepare($query);
15 $sth->execute;
16 while ( my @row = $sth->fetchrow_array ) {
17     if ( $row[0] =~ /$regex/ ) {
18         push( @factkey, $row[0] );
19     }
20     else {
21         $factval{ $row[0] } = $row[1] if ( $row[1] =~ /$regex/ );
22     }
23 }
24 $sth->finish;
25
26 print "scalar factkey => '" . scalar(@factkey) . "'\n";
27 foreach (@factkey) {
28     print "factkey => '$_'.\n";
29     my $new = $_;
30     $new =~ s/$regex/$1/g;
31
32     next if ( $new eq $_ );
33
34     $query =
35       "SELECT factoid_key FROM factoids where factoid_key=" . $dbh->quote($new);
36     my $sth = $dbh->prepare($query);
37     $sth->execute;
38     if ( scalar $sth->fetchrow_array ) {    # exist.
39         print "please remove $new or $_.\n";
40     }
41     else {                                  # ! exist.
42         $sth->finish;
43
44         $query =
45             "UPDATE factoids SET factoid_key="
46           . $dbh->quote($new)
47           . " WHERE factoid_key="
48           . $dbh->quote($_);
49         my $sth = $dbh->prepare($query);
50         $sth->execute;
51         $sth->finish;
52     }
53 }
54
55 print "scalar factval => '" . scalar( keys %factval ) . "\n";
56 foreach ( keys %factval ) {
57     print "factval => '$_'.\n";
58     my $fact = $_;
59     my $old  = $factval{$_};
60     my $new  = $old;
61     $new =~ s/$regex/$1/g;
62
63     next if ( $new eq $old );
64
65     $query =
66         "UPDATE factoids SET factoid_value="
67       . $dbh->quote($new)
68       . " WHERE factoid_key="
69       . $dbh->quote($fact);
70     my $sth = $dbh->prepare($query);
71     $sth->execute;
72     $sth->finish;
73 }
74
75 $dbh->disconnect();
76
77 # vim:ts=4:sw=4:expandtab:tw=80