in reply to DBD::CSV - How to insert a new column with column header in an existing CSV file
As I don't know SQL, my first idea was to deal with the csv as a text file. hmmm.
It seems DBD::CSV doesn't like "ALTER TABLE" so, here is a POC with "CREATE TABLE".
I hope, it is not the wrong way to do it.
#!/usr/bin/env perl use strict; use warnings; use DBI; my $table = "t.csv"; my $newtable = "tnew.csv"; my $dbh = DBI->connect ("dbi:CSV:") or die "Cannot connect: $DBI::errstr"; my $query = "SELECT * FROM $table"; my $sth = $dbh->prepare ($query); $sth->execute (); unlink $newtable; $dbh->do ("CREATE TABLE $newtable (vm_name char(0), vm_cluster char(0) +, zone char(0))") or die "Cannot prepare: " . $dbh->errstr (); my ($vm_name, $vm_cluster); $sth->bind_columns (\$vm_name, \$vm_cluster,undef); while ($sth->fetch) { $dbh->do ("INSERT INTO $newtable VALUES (". $dbh->quote ($vm_name) . ",". $dbh->quote ($vm_cluster) . ",". $dbh->quote (&whatzone()) . ")" ); } $sth->finish; #unlink $table; #rename $newtable,$table; sub whatzone { return "zone".(1+int rand(3)); }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: DBD::CSV - How to insert a new column with column header in an existing CSV file
by slayedbylucifer (Scribe) on Jul 19, 2012 at 16:50 UTC |