Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

GeekLog to Xoops Story Converter

by OverlordQ (Hermit)
on Feb 19, 2004 at 01:08 UTC ( [id://330104] : sourcecode . print w/replies, xml ) Need Help??
Category: Database
Author/Contact Info OverlordQ
Description: Converts the stories from a GeekLog to a Xoops database, it assumes a few things like author, host, all the hard coded values in the insert.
#!/usr/bin/perl -w

use strict;
use DBI;
use Date::Manip;

my $dbhr = DBI->connect("DBI:mysql:database=geeklog;host=remote.host",
+"username","password") or die "couldn't open database: $DBI::errstr;"
+;
my $dbhl = DBI->connect("DBI:mysql:database=xoops;host=localhost","use
+rname","password") or die "couldn't open database: $DBI::errstr\n";

my $sthr = $dbhr->prepare("SELECT sid,uid,date,title,introtext,bodytex
+t,hits FROM gl_stories ORDER BY date");
$sthr->execute() or die "Couldn't execure statement: $DBI::errstr;";

my $sthl;

while ( my ($storyid, $userid, $date, $title, $intro, $body, $hits) = 
+$sthr->fetchrow_array() ) {

    my $date2 = &ParseDate($date);
    my $secs = &UnixDate($date2,"%s");

    $intro =~ s/(?<!\\)((?:\\\\)*)'/$1\\'/g;
    $body =~ s/(?<!\\)((?:\\\\)*)'/$1\\'/g;

    $sthl = $dbhl->prepare("INSERT INTO xoops_stories VALUES ('$stid',
+'1','$title','$secs','$secs','0','129.130.179.134','0','0','$intro','
+$body','$hits','2','0','0','admin','0','R','0')");
    $sthl->execute() or die "Cannot execure statement: $DBI::errstr\n"
+;
    $stid++;

}

$sthr->finish();
$sthl->finish();

$dbhr->disconnect();
$dbhl->disconnect();