my @ArrayInMemory = ( [1, 'value 12', 'value 13'], [2, 'value 22', 'value 23'], [3, 'value 32', 'value 33'], ); my $csv = Text::CSV->new ({ binary => 1, eol => $/ }); $dbh->do(q{COPY testcp (col1, col2, col3) FROM STDIN CSV}); foreach my $row (@ArrayInMemory) { $csv->combine(@$row) or die 'Error '.$csv->error_input; $dbh->pg_putcopydata($csv->string); } $dbh->pg_putcopyend();