Hi list, I am trying to load the following data into Oracle table which has a date column
bash-2.03$ cat processed.csv test.com|16/Aug/2004:15:06:14|/index.html|demo1|Demo Company| test.com|16/Aug/2004:15:06:15|/index.jhtml|demo1|Demo Company| test.com|16/Aug/2004:15:06:54|/index.jhtml|demo1|Demo Company| Here is my code .... #!/usr/bin/perl -w use DBI; use strict; use DBI qw(:sql_types); DBI->trace( 2, 'dbitrace.log' ); my $dbh1 = DBI->connect("DBI:CSV:"); $dbh1->{'csv_tables'}->{'processed'} = { 'eol' => "\n", 'sep_char' => "|", 'quote_char' => undef, 'escape_char' => undef, 'file' => '/home/user1/reports/processed.csv', 'col_names' => ["hostname", "datetime", "url","username", "company"] }; my $dbh2 = DBI->connect("dbi:Oracle:db1", "report", "report" ) or die "Can't make 2nd database connect: $DBI::errstr\n"; my($hostname, $url, $username, $company, $datetime); #my($hostname, $url, $username, $company); #$sel1->bind_columns(undef, \$hostname, \$datetime, \$url, \$username, \$company); my $sel1 = $dbh1->prepare("SELECT hostname,datetime,url,username,company FROM processed"); $sel1->execute(); my $array_ref = $sel1->fetchall_arrayref(); $sel1->bind_columns( undef, \$hostname, \$datetime, \$url, \$username, \$company ); foreach my $row (@$array_ref) { my ($hostname, $url, $username, $company, $datetime) = @$row; $dbh2->do("INSERT INTO webtest (hostname,datetime,url,username,company) VALUES ( ?, TO_DATE(?,'DD/Mon/YYYY:HH24:MI:SS'), ?, ?, ? )", undef, $hostname, $datetime , $url, $username, $company ); } $dbh1->disconnect(); When I execute the perl code I am getting the following errors bash-2.03$ perl test4.pl DBD::Oracle::db do failed: ORA-01858: a non-numeric character was found where a numeric was expected (DBD ERROR: OCIStmtExecute) [for Statement "INSERT INTO webtest (hostname,datetime,url,username,company) VALUES ( ?, TO_DATE(?,'DD/Mon/YYYY:HH24:MI:SS'), ?, ?, ? )"] at test4.pl line 34. DBD::Oracle::db do failed: ORA-01858: a non-numeric character was found where a numeric was expected (DBD ERROR: OCIStmtExecute) [for Statement "INSERT INTO webtest (hostname,datetime,url,username,company) VALUES ( ?, TO_DATE(?,'DD/Mon/YYYY:HH24:MI:SS'), ?, ?, ? )"] at test4.pl line 34. DBD::Oracle::db do failed: ORA-01858: a non-numeric character was found where a numeric was expected (DBD ERROR: OCIStmtExecute) [for Statement "INSERT INTO webtest (hostname,datetime,url,username,company) VALUES ( ?, TO_DATE(?,'DD/Mon/YYYY:HH24:MI:SS'), ?, ?, ? )"] at test4.pl line 34. Here is the table information SQL> desc webtest Name Null? Type ----------------------------------------- -------- ---------------------------- HOSTNAME VARCHAR2(100) DATETIME DATE URL VARCHAR2(1000) USERNAME VARCHAR2(20) COMPANY VARCHAR2(100) Here is the dbitrace log, please let me know the problem. bash-2.03$ cat dbitrace.log DBI 1.43-nothread default trace level set to 0x0/2 (pid 3648) -> DBI->connect(DBI:CSV:, , ****) -> DBI->install_driver(CSV) for solaris perl=5.006001 pid=3648 ruid=501 euid=501 install_driver: DBD::CSV version 0.21 loaded from /usr/local/lib/perl5/site_perl/5.6.1/DBD/CSV.pm <- install_driver= DBI::dr=HASH(0x1b6268) -> default_user in DBD::_::dr for DBD::CSV::dr (DBI::dr=HASH(0x1b6268)~0x3c7750 undef undef HASH(0x18ded8)) <- default_user= ( undef undef ) [2 items] at DBI.pm line 577 -> connect for DBD::CSV::dr (DBI::dr=HASH(0x1b6268)~0x3c7750 '' undef **** HASH(0x207388)) -> STORE in DBD::File::db for DBD::CSV::db (DBI::db=HASH(0x20737c)~INNER 'f_dir' '.') <- STORE= 1 at File.pm line 75 -> STORE for DBD::CSV::db (DBI::db=HASH(0x20737c)~INNER 'f_valid_attrs' HASH(0x2073dc)) <- STORE= 1 at File.pm line 89 -> STORE for DBD::CSV::db (DBI::db=HASH(0x20737c)~INNER 'sql_valid_attrs' HASH(0x20751c)) <- STORE= 1 at File.pm line 94 -> STORE for DBD::CSV::db (DBI::db=HASH(0x3c7744)~0x20737c 'Active' 1) <- STORE= 1 at File.pm line 100 -> STORE for DBD::CSV::db (DBI::db=HASH(0x20737c)~INNER 'f_version' '0.31') <- STORE= 1 at File.pm line 106 -> STORE for DBD::CSV::db (DBI::db=HASH(0x20737c)~INNER 'sql_nano_version' '0.01') <- STORE= 1 at File.pm line 108 -> STORE for DBD::CSV::db (DBI::db=HASH(0x20737c)~INNER 'sql_statement_version' '1.09') <- STORE= 1 at File.pm line 108 <> FETCH= '1.09' ('sql_statement_version' from cache) at File.pm line 110 -> STORE for DBD::CSV::db (DBI::db=HASH(0x20737c)~INNER 'sql_handler' 'SQL::Statement') <- STORE= 1 at File.pm line 110 -> FETCH in DBD::File::db for DBD::CSV::db (DBI::db=HASH(0x20737c)~INNER 'csv_tables') <- FETCH= undef at CSV.pm line 74 -> STORE for DBD::CSV::db (DBI::db=HASH(0x20737c)~INNER 'csv_tables' HASH(0x207570)) <- STORE= 1 at CSV.pm line 74 -> STORE for DBD::CSV::db (DBI::db=HASH(0x20737c)~INNER 'Active' 1) <- STORE= 1 at CSV.pm line 75 <- connect= DBI::db=HASH(0x3c7744) at DBI.pm line 595 -> STORE for DBD::CSV::db (DBI::db=HASH(0x20737c)~INNER 'PrintError' 1) <- STORE= 1 at DBI.pm line 642 -> STORE for DBD::CSV::db (DBI::db=HASH(0x20737c)~INNER 'AutoCommit' 1) <- STORE= 1 at DBI.pm line 642 -> STORE for DBD::CSV::db (DBI::db=HASH(0x20737c)~INNER 'Username' undef) <- STORE= 1 at DBI.pm line 645 <> FETCH= undef ('Username' from cache) at DBI.pm line 645 <- connect= DBI::db=HASH(0x3c7744) -> STORE for DBD::CSV::db (DBI::db=HASH(0x20737c)~INNER 'dbi_connect_closure' CODE(0x3c77d4)) <- STORE= 1 at DBI.pm line 665 <> FETCH= HASH(0x207570)0keys ('csv_tables' from cache) at test4.pl line 9 -> DBI->connect(dbi:Oracle:db1, report, ****) -> DBI->install_driver(Oracle) for solaris perl=5.006001 pid=3648 ruid=501 euid=501 install_driver: DBD::Oracle version 1.14 loaded from /usr/local/lib/perl5/site_perl/5.6.1/sun4-solaris/DBD/Oracle.pm -> STORE in DBD::_::common for DBD::Oracle::dr (DBI::dr=HASH(0x207480)~0x3f05b8 'ShowErrorStatement' 1) <- STORE= 1 at Oracle.pm line 64 <- install_driver= DBI::dr=HASH(0x207480) -> connect for DBD::Oracle::dr (DBI::dr=HASH(0x207480)~0x3f05b8 'db1' 'report' **** HASH(0x3c7e48)) <- connect= DBI::db=HASH(0x38ec74) at DBI.pm line 595 -> STORE for DBD::Oracle::db (DBI::db=HASH(0x3c7e78)~INNER 'PrintError' 1) <- STORE= 1 at DBI.pm line 642 -> STORE for DBD::Oracle::db (DBI::db=HASH(0x3c7e78)~INNER 'AutoCommit' 1) <- STORE= 1 at DBI.pm line 642 -> STORE for DBD::Oracle::db (DBI::db=HASH(0x3c7e78)~INNER 'Username' 'report') <- STORE= 1 at DBI.pm line 645 <> FETCH= 'report' ('Username' from cache) at DBI.pm line 645 <- connect= DBI::db=HASH(0x38ec74) -> STORE for DBD::Oracle::db (DBI::db=HASH(0x3c7e78)~INNER 'dbi_connect_closure' CODE(0x3cea8c)) <- STORE= 1 at DBI.pm line 665 -> prepare in DBD::File::db for DBD::CSV::db (DBI::db=HASH(0x3c7744)~0x20737c 'SELECT hostname,datetime,url,username,company FROM processed') <> FETCH= 'DBD::CSV::st' ('ImplementorClass' from cache) at File.pm line 162 1 -> csv_cache_sql_parser_object for DBD::CSV::db (DBI::db=HASH(0x20737c)~INNER) 2 -> FETCH in DBD::File::db for DBD::CSV::db (DBI::db=HASH(0x20737c)~INNER 'RaiseError') 2 <- FETCH= ( '' ) [1 items] at CSV.pm line 87 2 -> FETCH for DBD::CSV::db (DBI::db=HASH(0x20737c)~INNER 'PrintError') 2 <- FETCH= ( 1 ) [1 items] at CSV.pm line 87 2 -> FETCH for DBD::CSV::db (DBI::db=HASH(0x20737c)~INNER 'csv_sql') 2 <- FETCH= undef at CSV.pm line 92 1 <- csv_cache_sql_parser_object= SQL::Parser=HASH(0x5fc118) at File.pm line 174 -> STORE in DBD::File::st for DBD::CSV::st (DBI::st=HASH(0x3c7f20)~0x3c7e3c 'f_stmt' DBD::CSV::Statement=HASH(0x5fbddc)) <- STORE= 1 at File.pm line 189 -> STORE for DBD::CSV::st (DBI::st=HASH(0x3c7f20)~0x3c7e3c 'f_params' ARRAY(0x5f22d4)) <- STORE= 1 at File.pm line 190 -> STORE for DBD::CSV::st (DBI::st=HASH(0x3c7f20)~0x3c7e3c 'NUM_OF_PARAMS' 0) <- STORE= 1 at File.pm line 191 <- prepare= DBI::st=HASH(0x3c7f20) at test4.pl line 25 -> execute in DBD::File::st for DBD::CSV::st (DBI::st=HASH(0x3c7f20)~0x3c7e3c) 1 -> FETCH in DBD::File::st for DBD::CSV::st (DBI::st=HASH(0x3c7e3c)~INNER 'NUM_OF_FIELDS') 1 <- FETCH= undef at File.pm line 435 1 -> STORE for DBD::CSV::st (DBI::st=HASH(0x3c7e3c)~INNER 'NUM_OF_FIELDS' 5) 1 <- STORE= 1 at File.pm line 435 <- execute= 3 at test4.pl line 26 -> fetchall_arrayref in DBD::_::st for DBD::CSV::st (DBI::st=HASH(0x3c7f20)~0x3c7e3c) 1 -> fetch in DBD::File::st for DBD::CSV::st (DBI::st=HASH(0x3c7e3c)~INNER) 2 -> FETCH for DBD::CSV::st (DBI::st=HASH(0x3c7e3c)~INNER 'ChopBlanks') 2 <- FETCH= '' at File.pm line 457 1 <- fetch= [ 'test.com' '16/Aug/2004:15:06:14' '/index.html' 'demo1' 'Demo Company' ] row1 at DBI.pm line 1825 1 -> fetch for DBD::CSV::st (DBI::st=HASH(0x3c7e3c)~INNER) 2 -> FETCH for DBD::CSV::st (DBI::st=HASH(0x3c7e3c)~INNER 'ChopBlanks') 2 <- FETCH= '' at File.pm line 457 1 <- fetch= [ 'test.com' '16/Aug/2004:15:06:15' '/index.jhtml' 'demo1' 'Demo Company' ] row2 at DBI.pm line 1825 1 -> fetch for DBD::CSV::st (DBI::st=HASH(0x3c7e3c)~INNER) 2 -> FETCH for DBD::CSV::st (DBI::st=HASH(0x3c7e3c)~INNER 'ChopBlanks') 2 <- FETCH= '' at File.pm line 457 1 <- fetch= [ 'test.com' '16/Aug/2004:15:06:54' '/index.jhtml' 'demo1' 'Demo Company' ] row3 at DBI.pm line 1825 1 -> fetch for DBD::CSV::st (DBI::st=HASH(0x3c7e3c)~INNER) 1 <- fetch= undef row3 at DBI.pm line 1825 <- fetchall_arrayref= [ ARRAY(0x5f28d0) ARRAY(0x5f4208) ARRAY(0x5f425c) ] row3 at test4.pl line 28 -> bind_columns in DBD::_::st for DBD::CSV::st (DBI::st=HASH(0x3c7f20)~0x3c7e3c undef SCALAR(0x16eab0) SCALAR(0x16ea50) SCALAR(0x16eaa4) SCALAR(0x16ea80) SCALAR(0x16ea68)) 1 <> FETCH= 5 ('NUM_OF_FIELDS' from cache) at DBI.pm line 1695 1 -> bind_col in DBD::_::st for DBD::CSV::st (DBI::st=HASH(0x3c7e3c)~INNER 1 SCALAR(0x16eab0) undef) 1 <- bind_col= 1 at DBI.pm line 1708 1 -> bind_col for DBD::CSV::st (DBI::st=HASH(0x3c7e3c)~INNER 2 SCALAR(0x16ea50) undef) 1 <- bind_col= 1 at DBI.pm line 1708 1 -> bind_col for DBD::CSV::st (DBI::st=HASH(0x3c7e3c)~INNER 3 SCALAR(0x16eaa4) undef) 1 <- bind_col= 1 at DBI.pm line 1708 1 -> bind_col for DBD::CSV::st (DBI::st=HASH(0x3c7e3c)~INNER 4 SCALAR(0x16ea80) undef) 1 <- bind_col= 1 at DBI.pm line 1708 1 -> bind_col for DBD::CSV::st (DBI::st=HASH(0x3c7e3c)~INNER 5 SCALAR(0x16ea68) undef) 1 <- bind_col= 1 at DBI.pm line 1708 <- bind_columns= 1 at test4.pl line 30 -> do in DBD::_::db for DBD::Oracle::db (DBI::db=HASH(0x38ec74)~0x3c7e78 'INSERT INTO webtest (hostname,datetime,url,username,company) VALUES ( ?, TO_DATE(?,'DD/Mon/YYYY:HH24:MI:SS'), ?, ?, ? )' undef 'test.com' 'Demo Company' '16/Aug/2004:15:06:14' '/index.html' 'demo1') 1 -> prepare for DBD::Oracle::db (DBI::db=HASH(0x3c7e78)~INNER 'INSERT INTO webtest (hostname,datetime,url,username,company) VALUES ( ?, TO_DATE(?,'DD/Mon/YYYY:HH24:MI:SS'), ?, ?, ? )' undef) dbd_preparse scanned 5 distinct placeholders 1 <- prepare= DBI::st=HASH(0x5fc01c) at DBI.pm line 1427 -> execute for DBD::Oracle::st (DBI::st=HASH(0x5fc01c)~0x5f431c 'test.com' 'Demo Company' '16/Aug/2004:15:06:14' '/index.html' 'demo1') bind :p1 <== 'test.com' (type 0) bind :p1 <== 'test.com' (size 8/9/0, ptype 4, otype 1) bind :p2 <== 'Demo Company' (type 0) bind :p2 <== 'Demo Company' (size 12/13/0, ptype 4, otype 1) bind :p3 <== '16/Aug/2004:15:06:14' (type 0) bind :p3 <== '16/Aug/2004:15:06:14' (size 20/21/0, ptype 4, otype 1) bind :p4 <== '/index.html' (type 0) bind :p4 <== '/index.html' (size 11/12/0, ptype 4, otype 1) bind :p5 <== 'demo1' (type 0) bind :p5 <== 'demo1' (size 5/6/0, ptype 4, otype 1) dbd_st_execute INSERT (out0, lob0)... !! ERROR: 1858 'ORA-01858: a non-numeric character was found where a numeric was expected (DBD ERROR: OCIStmtExecute)' (err#0) <- execute= undef at DBI.pm line 1428 !! ERROR: 1858 'ORA-01858: a non-numeric character was found where a numeric was expected (DBD ERROR: OCIStmtExecute)' (err#0) <- do= undef at test4.pl line 34 1 -> FETCH for DBD::Oracle::db (DBI::db=HASH(0x3c7e78)~INNER 'ParamValues') ERROR: 1858 'ORA-01858: a non-numeric character was found where a numeric was expected (DBD ERROR: OCIStmtExecute)' (err#0) 1 <- FETCH= undef at test4.pl line 34 -> DESTROY for DBD::Oracle::st (DBI::st=HASH(0x5f431c)~INNER) ERROR: 1858 'ORA-01858: a non-numeric character was found where a numeric was expected (DBD ERROR: OCIStmtExecute)' (err#0) <- DESTROY= undef at test4.pl line 34 -> do for DBD::Oracle::db (DBI::db=HASH(0x38ec74)~0x3c7e78 'INSERT INTO webtest (hostname,datetime,url,username,company) VALUES ( ?, TO_DATE(?,'DD/Mon/YYYY:HH24:MI:SS'), ?, ?, ? )' undef 'test.com' 'Demo Company' '16/Aug/2004:15:06:15' '/index.jhtml' 'demo1') 1 -> prepare for DBD::Oracle::db (DBI::db=HASH(0x3c7e78)~INNER 'INSERT INTO webtest (hostname,datetime,url,username,company) VALUES ( ?, TO_DATE(?,'DD/Mon/YYYY:HH24:MI:SS'), ?, ?, ? )' undef) dbd_preparse scanned 5 distinct placeholders 1 <- prepare= DBI::st=HASH(0x5f4364) at DBI.pm line 1427 -> execute for DBD::Oracle::st (DBI::st=HASH(0x5f4364)~0x5f43f4 'test.com' 'Demo Company' '16/Aug/2004:15:06:15' '/index.jhtml' 'demo1') bind :p1 <== 'test.com' (type 0) bind :p1 <== 'test.com' (size 8/9/0, ptype 4, otype 1) bind :p2 <== 'Demo Company' (type 0) bind :p2 <== 'Demo Company' (size 12/13/0, ptype 4, otype 1) bind :p3 <== '16/Aug/2004:15:06:15' (type 0) bind :p3 <== '16/Aug/2004:15:06:15' (size 20/21/0, ptype 4, otype 1) bind :p4 <== '/index.jhtml' (type 0) bind :p4 <== '/index.jhtml' (size 12/13/0, ptype 4, otype 1) bind :p5 <== 'demo1' (type 0) bind :p5 <== 'demo1' (size 5/6/0, ptype 4, otype 1) dbd_st_execute INSERT (out0, lob0)... !! ERROR: 1858 'ORA-01858: a non-numeric character was found where a numeric was expected (DBD ERROR: OCIStmtExecute)' (err#0) <- execute= undef at DBI.pm line 1428 !! ERROR: 1858 'ORA-01858: a non-numeric character was found where a numeric was expected (DBD ERROR: OCIStmtExecute)' (err#0) <- do= undef at test4.pl line 34 1 -> FETCH for DBD::Oracle::db (DBI::db=HASH(0x3c7e78)~INNER 'ParamValues') ERROR: 1858 'ORA-01858: a non-numeric character was found where a numeric was expected (DBD ERROR: OCIStmtExecute)' (err#0) 1 <- FETCH= undef at test4.pl line 34 -> DESTROY for DBD::Oracle::st (DBI::st=HASH(0x5f43f4)~INNER) ERROR: 1858 'ORA-01858: a non-numeric character was found where a numeric was expected (DBD ERROR: OCIStmtExecute)' (err#0) <- DESTROY= undef at test4.pl line 34 -> do for DBD::Oracle::db (DBI::db=HASH(0x38ec74)~0x3c7e78 'INSERT INTO webtest (hostname,datetime,url,username,company) VALUES ( ?, TO_DATE(?,'DD/Mon/YYYY:HH24:MI:SS'), ?, ?, ? )' undef 'test.com' 'Demo Company' '16/Aug/2004:15:06:54' '/index.jhtml' 'demo1') 1 -> prepare for DBD::Oracle::db (DBI::db=HASH(0x3c7e78)~INNER 'INSERT INTO webtest (hostname,datetime,url,username,company) VALUES ( ?, TO_DATE(?,'DD/Mon/YYYY:HH24:MI:SS'), ?, ?, ? )' undef) dbd_preparse scanned 5 distinct placeholders 1 <- prepare= DBI::st=HASH(0x5f5cc8) at DBI.pm line 1427 -> execute for DBD::Oracle::st (DBI::st=HASH(0x5f5cc8)~0x5f4358 'test.com' 'Demo Company' '16/Aug/2004:15:06:54' '/index.jhtml' 'demo1') bind :p1 <== 'test.com' (type 0) bind :p1 <== 'test.com' (size 8/9/0, ptype 4, otype 1) bind :p2 <== 'Demo Company' (type 0) bind :p2 <== 'Demo Company' (size 12/13/0, ptype 4, otype 1) bind :p3 <== '16/Aug/2004:15:06:54' (type 0) bind :p3 <== '16/Aug/2004:15:06:54' (size 20/21/0, ptype 4, otype 1) bind :p4 <== '/index.jhtml' (type 0) bind :p4 <== '/index.jhtml' (size 12/13/0, ptype 4, otype 1) bind :p5 <== 'demo1' (type 0) bind :p5 <== 'demo1' (size 5/6/0, ptype 4, otype 1) dbd_st_execute INSERT (out0, lob0)... !! ERROR: 1858 'ORA-01858: a non-numeric character was found where a numeric was expected (DBD ERROR: OCIStmtExecute)' (err#0) <- execute= undef at DBI.pm line 1428 !! ERROR: 1858 'ORA-01858: a non-numeric character was found where a numeric was expected (DBD ERROR: OCIStmtExecute)' (err#0) <- do= undef at test4.pl line 34 1 -> FETCH for DBD::Oracle::db (DBI::db=HASH(0x3c7e78)~INNER 'ParamValues') ERROR: 1858 'ORA-01858: a non-numeric character was found where a numeric was expected (DBD ERROR: OCIStmtExecute)' (err#0) 1 <- FETCH= undef at test4.pl line 34 -> DESTROY for DBD::Oracle::st (DBI::st=HASH(0x5f4358)~INNER) ERROR: 1858 'ORA-01858: a non-numeric character was found where a numeric was expected (DBD ERROR: OCIStmtExecute)' (err#0) <- DESTROY= undef at test4.pl line 34 -> disconnect for DBD::CSV::db (DBI::db=HASH(0x3c7744)~0x20737c) 1 -> STORE in DBD::File::db for DBD::CSV::db (DBI::db=HASH(0x20737c)~INNER 'Active' 0) 1 <- STORE= 1 at CSV.pm line 106 <- disconnect= 1 at test4.pl line 37 -> DESTROY for DBD::Oracle::db (DBI::db=HASH(0x3c7e78)~INNER) ERROR: 1858 'ORA-01858: a non-numeric character was found where a numeric was expected (DBD ERROR: OCIStmtExecute)' (err#0) <- DESTROY= undef -> DESTROY in DBD::File::st for DBD::CSV::st (DBI::st=HASH(0x3c7e3c)~INNER) <- DESTROY= undef -> DESTROY for DBD::CSV::db (DBI::db=HASH(0x20737c)~INNER) -> STORE for DBD::CSV::db (DBI::db=HASH(0x20737c)~INNER 'Active' 0) <- STORE= 1 at CSV.pm line 101 <- DESTROY= undef -- DBI::END -> disconnect_all for DBD::Oracle::dr (DBI::dr=HASH(0x207480)~0x3f05b8) <- disconnect_all= (not implemented) at DBI.pm line 674 -> disconnect_all in DBD::File::dr for DBD::CSV::dr (DBI::dr=HASH(0x1b6268)~0x3c7750) <- disconnect_all= undef at DBI.pm line 674 ! -> DESTROY for DBD::Oracle::dr (DBI::dr=HASH(0x3f05b8)~INNER) ! <- DESTROY= (not implemented) during global destruction ! -> DESTROY in DBD::File::dr for DBD::CSV::dr (DBI::dr=HASH(0x3c7750)~INNER) ! <- DESTROY= undef during global destruction __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com