in reply to Re^2: Issue while inserting Thai Characters into Database..
in thread Issue while inserting Thai Characters into Database..

Best of luck - will wait to hear what progress you make.

  • Comment on Re^3: Issue while inserting Thai Characters into Database..

Replies are listed 'Best First'.
Re^4: Issue while inserting Thai Characters into Database..
by ajaykumarb (Initiate) on Jan 21, 2010 at 08:35 UTC
    Thanks much Martin.
    I have installed ver1.23 and made changes suggested by you.

    #!/usr/bin/perl use DBI; use Encode; my $AbsFileName = "E:\\Ajay\\sample\\sample\.pnx"; if (-e "$AbsFileName") { my ($DSN,$dbh,$sth); $dbh = DBI->connect("dbi:ODBC:DSN=<DSN>;UID=<USER>;PWD=<PASSWD +>") or die "$DBI::errstr\n"; $dbh->{odbc_utf8_on} = 1; 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 open INFILE, "<:encoding(UTF-8)", "$AbsFileName" or die "Can't + open File $AbsFileName for reading: $!\n"; while (my $data = <INFILE>) { chomp($data); my ($cfd1, $cfd2, $cfd3, $cfd4, $cfd5, $cfd6, $cfd7, $cfd8 +, $cfd9, $cfd10, $cfd11, $cfd12, $enr1, $enr2, $enr3, $enr4, $enr5) = + split /:/, $data; my $outfl = "E:\\Ajay\\sample\\query.txt"; open OUTFILE, ">>:encoding(UTF-8)", "$outfl" or die "Can't + open File $outfl for writing: $!\n"; 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, $cfd8, $cfd9, $cfd1 +0, $cfd11, $cfd12, $enr1, $enr2, $enr3, $enr4, $enr5)"; print OUTFILE "\n$sql\n"; close OUTFILE; $sth->execute($cfd1, $cfd2, $cfd3, $cfd4, $cfd5, $cfd6, $c +fd7, $cfd8, $cfd9, $cfd10, $cfd11, $cfd12, $enr1, $enr2, $enr3, $enr4 +, $enr5) or die "$DBI::errstr\n"; } close INFILE; #Close the database $sth->finish; $dbh->disconnect; } else { print "\n\n $AbsFileName doesn't exists\n"; }
    Above code is working fine and i am able to insert Thai characters successfully. But i do have a DATETIME column in database. I am getting the error "DBD::ODBC::st execute failed: MicrosoftODBC SQL Server DriverInvalid character value for cast specification (SQL-22018)" when i insert value to date field.

    Thanks,
    Ajay
        Thanks for your response Martin.
        I tried inserting date in SQL Server directly, it is allowing me 'YYYY-MM-DD' and 'MM-DD-YYYY' formats. It is getting displayed as 'MM/DD/YYYY HH:MM:SS AM'format.
        But when i try inserting from Perl it is giving errors as shown below.

        my $sth = $dbh->prepare(<<SQL) or die "$DBI::errstr\n"; INSERT INTO BK_imageINfo (BusDate) VALUES ({ts ?}) SQL *******OR******* my $sth = $dbh->prepare(<<SQL) or die "$DBI::errstr\n"; INSERT INTO BK_imageINfo (BusDate) VALUES ({d ?}) SQL $sth->execute($bdate);
        Input1. my $bdate = "2010-01-20 00:00:00";
        ERROR: DBD::ODBC::st execute failed: MicrosoftODBC SQL Server DriverSQL ServerIncorrect syntax near '@P1'. (SQL-42000).
        MicrosoftODBC SQL Server DriverSQL ServerStatement(s) could not be prepared. (SQL-42000)

        Input2. my $bdate = "01-20-2010 00:00:00";
        ERROR: DBD::ODBC::st execute failed: MicrosoftODBC SQL Server DriverInvalid character value for cast specification (SQL-22018)