请教各位,csv导入。用php处理,该则么写,求教

解决方案 »

  1.   

    我先导到txt文件中,然后再读出,写入数据库的./
      

  2.   

    就一个html,一个php,要择么做
    html,我已经写好了,
    <form action=upload.php method=post enctype=multipart/form-data>
    <input type=file name=upfile>
    <input type=submit value=上传>
    </form> 
    php该则么写
      

  3.   

    看PHPMYADMIN的代码,具体是...你自己去查吧.我这还有个函数,也是改自phpmyadmin的:
    /**
     * 输出一个数据库中的表到一个CSV文件中
     *
     * @param   string      Mysql数据库的主机
     * @param   string      数据库名称
     * @param   string      数据库中的表名
     * @param   string      数据库的连接用户名
     * @param   string      数据库的连接密码
     * @param   string      数据库的表名
     * @param   string      数据库的 
     * @param   string      错误页面
     * @param   string      SQL语句
     *
     * @return  text        返回CSV格式的内容
     *
     * @access  public
     */
    function PMA_exportData($host,$db,$user,$pass,$filename, $crlf, $error_url, $sql_query,$extype) {
        $what="csv";
         $csv_terminated="\n";
         $csv_separator=",";
         $csv_enclosed=" ";
         $csv_escaped="&nbsp;";
        

        mysql_connect($host, $user,$pass) or   die("不能连接数据库,错误代码如下:" . mysql_error());
        mysql_select_db($db);

     
        $result      = mysql_query($sql_query);
        $fields_cnt  = mysql_num_fields($result);
    $cc="";
     
      $fp = fopen($filename, 'w');
        // 格式化数据
    $number=0;
        while ($row = mysql_fetch_row($result)) {   $number=$number+1;
    if($number>5 and extype==1){
     break;
    }
            $schema_insert = '';
            for ($j = 0; $j < $fields_cnt; $j++) {
                if (!isset($row[$j]) || is_null($row[$j])) {
                    $schema_insert .="NULL";  //用什么来替换空值
                } elseif ($row[$j] == '0' || $row[$j] != '') {
                    // loic1 :用引号包含字段值
                
                    if ($csv_enclosed == '') {
                        $schema_insert .= $row[$j];
                    } else {
                        $schema_insert .= $csv_enclosed
                                       . str_replace($csv_enclosed, $csv_escaped . $csv_enclosed, $row[$j])
                                       . $csv_enclosed;
                    }
                } else {
                    $schema_insert .= '';
                }
                if ($j < $fields_cnt-1) {
                    $schema_insert .= $csv_separator;
                }
            } // end for
        fwrite($fp,$schema_insert . $csv_terminated);
      // $cc.=$schema_insert . $csv_terminated;
        } // end while
        mysql_free_result($result);


       fclose($fp);
       return true;
    } /**
     * 从一个上传的文件中将数据导入到一个表中
     *
     * @param   string      Mysql数据库的主机
     * @param   string      数据库名称
     * @param   string      数据库中的表名
     * @param   string      数据库的连接用户名
     * @param   string      数据库的连接密码
     * @param   string      数据库的表名
     *
     * @return  bool        是否执行成功
     *
     * @access  public
     */
     function uploadFileOfCsv($host,$db,$user,$pass,$table,$f_names,$filename){      mysql_connect($host, $user,$pass) or   die("不能连接数据库,错误代码如下:" . mysql_error());
        mysql_select_db($db);

     
     
        $fields_cnt  = count($f_names);
       $test2=array(array());
         $rownum=0; 
     

    $fp = fopen($filename, "r"); while ($buffer = fgets($fp,4096))
    {
    $i++; 

    $tmp_arr = explode(",",$buffer);

    if(trim($tmp_arr[0]) == ""){
    echo "<script language='javascript'>";
    echo "alert('第".$i."行空,请检查!');";
    echo "location.href=document.referrer;";
    echo "</script>";
    exit;


        $query = "INSERT INTO  ".$db.".".$table;
        $query.="(";
     
    for($i=0;$i<$fields_cnt;$i++){
    if($i==0){
    $query.=$f_names[$i]." ";
    }else{
    $query.=" ,".$f_names[$i]." ";
    }
    }
    $query.=")";   
     $query .=" values ( ";
      for($q=0;$q<$fields_cnt;$q++){ 
      if($q==$fields_cnt-1){ 
            $tmp=$tmp_arr[$q];
            $query.="'$tmp');";
      }else{
      $tmp=$tmp_arr[$q];
      $query.="'$tmp',";
     
     
      }
    }//end for($q=0;
    echo $query."<br>";   
         
       log2("导出的SQL语句".$query);
                   mysql_query($query); 
     
     
    }
       fclose($fp);
       
       
       return "OK";
     unlink("temp.csv");
     
        
    }

     
     
         function log2($event = null){
                    //global $db;
                  // global $login;
                    
                    if(LOG_ENABLED){
                             $now = date("Y-M-d H:i:s");
                    
                           $fd = fopen ("C:log.html",'a');
                            $log = $now." ".$_SERVER["REMOTE_ADDR"] ." - $event <br>";
                     fwrite($fd,$log);
                     fclose($fd);
                    }
            }
       
      

  4.   

    以前用CVS试过,但导入时仍出现了错,原来,是字符中有空格或制表符
      

  5.   

    就是csv的部分:
    连接服务器,将csv复制到一个目录,然后解析
      

  6.   

    该则么拷贝CSV文件到服务器上,然后再去解析
      

  7.   

    则麽样才能处理根据上传的csv生成sql,然后执行