ajaykumarb has asked for the wisdom of the Perl Monks concerning the following question:
#!/usr/bin/perl use DBI; use Encode; my $AbsFileName = "E:\\sample\.txt"; open (A123, "$AbsFileName"); my ($DSN,$dbh,$sth); $dbh = DBI->connect("dbi:ODBC:DSN=<dsn name>;UID=<username>;PW +D=<password>") or die "$DBI::errstr\n"; $dbh->{odbc_default_bind_type} = 12; # SQL_VARCHAR my $sth = $dbh->prepare(<<SQL) or die "$DBI::errstr\n"; INSERT INTO BK_imageINfo (CustFld1,CustFld2,CustFld3,CustFld4, +CustFld5,CustFld6,CustFld7,CustFld8,CustFld9,CustFld10,CustFld11,Cust +Fld12,Efield1,Efield2,Efield3,Efield4,Efield5) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) SQL while (<A123>) { my $data = decode_utf8( $_ ); chomp($data); my ($cfd1, $cfd2, $cfd3, $cfd4, $cfd5, $cfd6, $cfd7, $cfd8 +, $cfd9, $cfd10, $cfd11, $cfd12$enr1, $enr2, $enr3, $enr4, $enr5) = s +plit /:/, $data; ## $enr1-5 contains Thai characters... In database, Thai c +har need to be inserted as N'Thai chars'..So prepending with 'N' my $enr11 = "N". $dbh->quote( $enr1 ); my $enr21 = "N". $dbh->quote( $enr2 ); my $enr31 = "N". $dbh->quote( $enr3 ); my $enr41 = "N". $dbh->quote( $enr4 ); my $enr51 = "N". $dbh->quote( $enr5 ); open (ABC, ">>query.txt"); my $sql = "INSERT INTO BK_imageINfo (CustFld1,CustFld2,Cus +tFld3,CustFld4,CustFld5,CustFld6,CustFld7,CustFld8,CustFld9,CustFld10 +,CustFld11,CustFld12,Efield1,Efield2,Efield3,Efield4,Efield5) VALUES +('$cfd1', '$cfd2', '$cfd3', '$cfd4', '$cfd5', '$cfd6', '$cfd7', '$cfd +8', '$cfd9', '$cfd10', '$cfd11', '$cfd12', '$enr11', '$enr21', '$enr3 +1', '$enr41', '$enr51')"; print ABC "\n$sql\n"; close ABC; $sth->execute($cfd1, $cfd2, $cfd3, $cfd4, $cfd5, $cfd6, $c +fd7, $cfd8, $cfd9, $cfd10, $cfd11, $cfd12, $enr11, $enr21, $enr31, $e +nr41, $enr51) or die "$DBI::errstr\n"; } close A123; #Close the database $sth->finish; $dbh->disconnect;
|
|---|