<input type="file" name="exngcsv" >
     <input type="submit" value="导入数据" name="exngsend" >
if($exngcsv!="none" && $exngcsv!=""){  $fhandle=fopen($exngcsv,"r");  while($data=fgetcsv($fhandle,1000,",")) {
        $ocno=trim($data[0]);
      $ccy=trim($data[1]);    $sql="insert into tmp_fx values ('$ocno','$ccy')";
    //echo "$sql;<br>";
     ora_parse($cursor, $sql) or die;
     ora_exec($cursor);
 }
 fclose($fhandle);
}
以上代码能够实现csv文件中的数据插入oracle数据库
----------------------------------------
if (isset($_POST['exngsend'])){    $file = $_FILES['exngcsv'];    $file_type = substr(strstr($file['name'],'.'),1);
    //echo '<pre>';print_r($_SERVER);
    // 检查文件格式
    if ($file_type != 'csv'){
        echo '文件格式不对,请重新上传!';
        exit;
    }
    $handle = fopen($file['tmp_name'],"r");    $row = 0;
    while ($data = fgetcsv($handle,1000,',')){
        //echo "<font color=red>$row</font>";  //可以知道总共有多少行
        $row++;
        $num = count($data);
        // 这里会依次输出每行当中每个单元格的数据
        for ($i=0; $i<$num; $i++){
            echo $data[$i]."<br>";
            // 在这里对数据进行处理
        }
    }    fclose($handle);
}
这段代码可以读出csv文件中的数据,但是加上下面这段数据库操作语言后,SQl语句都对,但就是不能插入数据卡,不知道什么原因
       $ocno=trim($data[0]);
      $ccy=trim($data[1]);    $sql="insert into tmp_fx values ('$ocno','$ccy')";
    //echo "$sql;<br>";
     ora_parse($cursor, $sql) or die;
     ora_exec($cursor);

解决方案 »

  1.   

    应该是没有特殊字符,因为同一个csv文件,第一段程序上传导入是成功的,第二段就不行
    不过,想多学点东西,如果有“’”的话,怎么操作,请指教
      

  2.   

    http://blog.csdn.net/wbandzlhgod/article/details/6651173
      

  3.   

    最好附上错误提示。? 是不是索引的问题,唯一性啦,是不是本身获取的值是空的,而已存在此记录了 //echo "$sql;<br>";输出结果又是什么?
    找问题也得有个步骤啊
      

  4.   


    这段代码可以读出csv文件中的数据,但是加上下面这段数据库操作语言后,SQl语句都对,但就是不能插入数据卡,不知道什么原因
      $ocno=trim($data[0]);
      $ccy=trim($data[1]);  $sql="insert into tmp_fx values ('$ocno','$ccy')";
      //echo "$sql;<br>";
      ora_parse($cursor, $sql) or die;
      ora_exec($cursor);
      

  5.   

    ora_parse($cursor, $sql) or die;
    改为
    ora_parse($cursor, $sql);

    ora_parse($cursor, $sql) or die(ora_error());
      

  6.   


    试了一下,居然报错是ORA-00000: normal, successful completion
    很简单的是insert语句啊,无解
      

  7.   

    既然是无错,那么还是你代码写错了你是这样写的
      //echo "$sql;<br>";
      ora_parse($cursor, $sql) or die;
      ora_exec($cursor);
    那个  or die 就不应该要了,die 就是中断程序的执行。后面的 ora_exec($cursor); 也就不会执行了oracle 函数与其他数据库函数还是有很大区别的!
      

  8.   

    把or die去了也是一样啊,页面显示成功,但是数据库里没有数据插入
      

  9.   

    150237668 4001000
    150155409 4001000
    150207404 4001000
    150160310 4001000
    150238820 4001000
    150226741 4001000
    这个就是数据 
    //echo "$sql;<br>";
    我用echo打出sql语句,放在toad里面都能执行成功,无解了
      

  10.   

    (1)检测CSV文件中是否有特殊字符;(2)检查上传代码是否正确,可以先用一条记录的CSV文件进行测试。