Hi all,

I'm having great issues with my program at the moment... it is supposed to
take a csv file and parse it, with the output being stored in a MySQL
database. The problem I'm having is that the file I need to parse
('ish_history.csv') will not open in the program for some reason. I know the
file exists, I'm on a linux system and the file is world-readable, and I've
tried placing the file in the directory the script is run from AS WELL as
using full path names to said file... all has resulted in no luck, and I'm
getting the "No such file or directory" error. Here is my code so far:



[code]
#! /usr/bin/perl
#
use DBI;
use DBD::mysql;
use Text::CSV;


#configure variables
my $host = "localhost";
my $db = "somefakedatabase";
my $table = "somefaketable";
my $user = "somefakeuser";
my $password = "yeahrightlikethisismyrealpasswordLOL";

#connect to the database
my $dbc = "dbi:mysql:$db:$host";
if(my $dbh = DBI->connect($dbc, $user, $password) or die "Can't connect to
the
    database: $DBI::errstr\n") {
    print "Connected to the database!";
}

        #setup parser
        my $csv = Text::CSV->new();
        print "What is the name of the file? :  ";
        chomp(my $file = <STDIN>);

            open CSV, "<", $file or die "Can't open the file \"$file\": $!";
            while(<CSV>) {
                    next if ($. == 1);
                    if ($csv->parse($_)) {
                        my @columns = $csv->fields();
                        my $myquery = $dbh->prepare('insert into $table
(station_number,WBAN_number,station_name,country,fips,state,ICAO_callsign,lattitude,longitude,elevation)
values ($columns[0], $columns[1], **truncated**
                        $myquery->execute();
                        $dbh->disconnect();
                      } else {
                              my $err = $csv->error_input;
                              print "Failed to parse line: $err";
                        }
                   }
                   close CSV;
           closedir TMPDIR;
[\code]

Any ideas as to why this isn't working?

Reply via email to