I wanted a simple database to track the dates that our servers were last rebooted, so I decided to use the
DBD::SQLite2 module. Well, I am having a problem at the moment, and need some advice.This is running on a Windows NT 4 workstation (ActiveState Perl 5.8.4 Build 810)
The code:
#!perl -w
use strict;
use DBI;
my $D=DBI->connect("DBI:SQLite2:dbname=Store.db","","");
$D->do("CREATE TABLE ISP(Store INTEGER,Date CHAR[9])");
$D->do("CREATE TABLE UnityPrimary(Store INTEGER,Date CHAR[9])");
$D->do("CREATE TABLE UnitySecondary(Store INTEGER,Date CHAR[9])");
open(CSV,"reboots.csv")||die"Can't open: $!\n";
while(<CSV>){
chomp;
my($store,$isp,$pri,$sec)=split /,/;
my $sta=$dbh->prepare("INSERT INTO ISP(Store,Date) VALUES($store,$is
+p)");
my $stb=$dbh->prepare("INSERT INTO UnityPrimary(Store,Date) VALUES($
+store,$pri)");
my $stc=$dbh->prepare("INSERT INTO UnitySecondary(Store,Date) VALUES
+($store,$sec)");
$sta->execute;
$stb->execute;
$stc->execute;
}
close CSV;
my $sth=$dbh->prepare("SELECT * FROM UnityPrimary WHERE Store=1");
$s->execute;
while(my@row=$s->fetchrow_array){ print "@row\n"; }
$D->disconnect;
The data file:
1,18-Oct-04,29-Oct-04,29-Oct-04
2,18-Oct-04,26-Oct-04,26-Oct-04
3,21-Oct-04,26-Oct-04,11-Aug-04
4,20-Oct-04,11-Jun-04,27-Oct-04
5,18-Oct-04,3-Sep-04,24-May-04
6,17-Oct-04,15-Oct-04,15-Oct-04
The error messages:
DBD::SQLite2: :st execute failed: no such column: Oct(1) at dbdimp.c l
+ine 412 at C:\WINNT\Profiles\toms\Desktop\createdb.pl line 26, <CSV>
+line 1.
DBD::SQLite2: :st execute failed: no such column: Oct(1) at dbdimp.c l
+ine 412 at C:\WINNT\Profiles\toms\Desktop\createdb.pl line 27, <CSV>
+line 1.
DBD::SQLite2: :st execute failed: no such column: Oct(1) at dbdimp.c l
+ine 412 at C:\WINNT\Profiles\toms\Desktop\createdb.pl line 28, <CSV>
+line 1.
The above three error messages repeat themselves for each line in the .csv file. What exactly is causing this?
TStanley
--------
The only thing necessary for the triumph of evil is for good men to do nothing -- Edmund Burke