use strict; use warnings; use DBI; use DBD::AnyData; my $table = "data"; my @fields = qw/ id name /; my %field_def = ( id => 'char(20)', name => 'char(20)', ); my $dbh = DBI->connect('dbi:AnyData(RaiseError=>1):') or die "Can not create database connection"; # build the create table SQL on the fly $dbh->do ( "CREATE TABLE $table (" . join(',', map { $_ . ' ' . $field_def{$_} } @fields) . ")" ) or die "Can not create table"; $dbh->do("INSERT INTO $table VALUES ('01', 'FOO' )"); $dbh->do("INSERT INTO $table VALUES ('02', 'BAR' )"); unlink './data.csv'; # delete existing csv file if any $dbh->func( 'data', 'CSV', './data.csv', 'ad_export'); $dbh->disconnect();