#!/usr/bin/perl -- use strict; use warnings; use DBI; use DBD::CSV; #~ Souce Data my $data = q{X~Y~Z 1~2~3 col1~col2~col3~col4~col5 A~B~C~D~E }; use Path::Tiny qw/ path /; path( 'goner/Aviva_cimp_money_positive.txt' )->touchpath; path( 'goner/Aviva_cimp_money_positive.txt' )->spew_raw( $data ); #~ Output Data #~ X~Y~Z~~ #~ 1~2~3~~ #~ col1~col2~col3~col4~col5 #~ A~B~C~D~E my $dbh = DBI->connect("dbi:CSV:",undef,undef,{ #~ f_dir => $_ENV::TempFilesDIR, f_dir => 'goner', csv_sep_char => "~", csv_quote_space => 0}) or die $DBI::errstr; $dbh->{'csv_tables'}->{'cimp_money'} = { 'file' => 'Aviva_cimp_money_positive.txt', col_names => [qw(rcrd_type seq_no emp_no forename surname initial ni_no ttl gender dob emp_cntrbtn emplyr_ctr tax_period tax_yr exch_amt)], #~ csv_skip_first_row => 'yes', #~ skip_rows => 4, ## haha skip them all skip_rows => 2, ## haha skip them all }; #~ dd( $dbh->{csv_tables} ); #~ $dbh->do('UPDATE cimp_money SET forename=?,surname=? WHERE emp_no=?',undef,$wrk_forename,$wrk_surname,$wrk_emp_no) or die $DBI::errstr; #~ $dbh->do('UPDATE cimp_money SET forename=?,surname=? WHERE emp_no=?',undef,'$wrk_forename','$wrk_surname','$wrk_emp_no') or die $DBI::errstr; #~ $dbh->do('UPDATE cimp_money SET forename=?,surname=? WHERE emp_no=?',undef,'$wrk_forename','$wrk_surname',3) or die $DBI::errstr; $dbh->do('UPDATE cimp_money SET forename=?,surname=? WHERE emp_no=?',undef,'$wrk_forename','$wrk_surname','col3') or die $DBI::errstr; print path( 'goner/Aviva_cimp_money_positive.txt' )->lines_raw( ); path( 'goner' )->remove_tree; #~ dd( { %$dbh } ); dd( $dbh->{csv_tables} ); #~ dd( $dbh->{csv_tables} ); __END__ $ perl fresher-dbi-dbd-csv-1128113.pl X~Y~Z 1~2~3 col1~col2~col3~$wrk_forename~$wrk_surname~~~~~~~~~~ A~B~C~D~E~~~~~~~~~~