我有许多CSV格式的数据需要上传到MYSQL但是前面大概20多行,无用数据,如何删除前面的数据,把剩下有用的上传,请各位大侠帮忙给个 思路或者CODE?----------
如果不同结构的CSV该如何处理?有现成的类吗?
比如:
a.csv标题1  标题2  标题3
1        2      3
b.csvname  sex  age
..     ..  ...===============================本人菜鸟,谢谢大家帮忙!

解决方案 »

  1.   

    是要用php实现吗?人工的话,删除无用数据,用phpmyadmin就可以导入啊。或者命令:load infile 'aa.csv' into ............
      

  2.   

    是用Php实现,不过要在网页前端,不能用phpmyadmin
      

  3.   

    这是一个例子,你可以参考一下:
    $arr=file("aa.csv");
    file_put_contents('aa.csv',join("",array_slice($arr,20)));mysql_connect('localhost',"root",'');
    $sql="load data infile '绝对路径/aa.csv' into table test.csv fields terminated by ','";  //库名:test,表名:csv
    mysql_query($sql) or die(mysql_error());
      

  4.   

    我的意思是能不能PHP删除前面N行数据。请指点!
      

  5.   

    可以读成一个二维的数组,每一行和每一列是你的文件中的内容,至于上传哪一行内容,那就自己根据数组的索引号来选择了。抄的代码,略有改动。function getCSVdata($filename)
    {
    $row = 0;//行数目
    if(($handle = fopen($filename, "r")) !== false) 
    {
        while(($dataSrc = fgetcsv($handle)) !== false) 
        {
    $num = count($dataSrc);//获取总列数
    for ($c=0; $c < $num; $c++)//列 column
    {
             $data[] = $dataSrc[$c];
    }
            if(!empty($data))
            {
             $dataRtn[] = $data;
             unset($data);
            }
            $row++;
        }
        //echo "<br />".$row."<br />";
        fclose($handle);
        return $dataRtn;
    }
    }
    //返回一个二维数组和你的csv表结构一致,但要注意使用数组元素$dataRtn[$i][$j]时,
    //每一行都要用count()获取下该行的列数!
    //因为如果一行中有的表格是空的,比如:
    // 1,NULL,NULL,NULL,2,NULL,NULL --这个列数是5
    // 1,NULL,NULL,NULL --这个列数是1