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)); }
In reply to Re: DBD::CSV - How to insert a new column with column header in an existing CSV file
by brx
in thread DBD::CSV - How to insert a new column with column header in an existing CSV file
by slayedbylucifer
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |