#!/usr/bin/perl -w # -*- perl -*- use strict; use DBI; $|++; my $database = 'amnesty'; my $csvdata = './postcodes.csv'; my $tablename = 'postcode_locations'; my $user = 'amnesty'; my $password = 'sus1e'; open( INPUT, $csvdata) || die("can\'t open file $csvdata: $!"); print "found postcode data ok\n"; my $dbh = DBI->connect("dbi:mysql:database=$database",$user,$password); print "connected to database ok\n" if $dbh; my @cols = split(",",); chomp @cols; my $columns = join(", ", map { "$_ varchar(255)" } grep { $_ ne "postcode" } @cols); print "data columns:\n$columns\n"; my $maketable = "create table $tablename (postcode varchar(12) NOT NULL, $columns, primary key(postcode));"; print "creating table with\n$maketable\n"; $dbh->do($maketable); print "created $tablename table.\nInserting location data."; my $counter; my $insert = "INSERT INTO $tablename( " . join(",",@cols) . " ) values ( " . join(",", map { "?" } @cols) . ")"; my $sth = $dbh->prepare($insert); while () { chomp; my @data = split(/,/); $sth->execute( @data ); $counter++; print "."; } $sth->finish; $dbh->disconnect; print "\n\ndone.\n$counter points imported into sample data set.\n\n";