从csv或逗号分隔文件中读取数据

时间:2012-11-05 10:48:53

标签: php csv filereader memory-limit

  

可能重复:
  Import CSV file directly into MySQL

我试过用不同的方法(其中一个是下面的)从csv文件或大文件大小(超过250MB)的逗号分隔文件读取数据,所以我可以将所需的数据从它插入到mysql数据库但程序在完成文件读取之前每次都会崩溃。我还尝试增加php.ini中的内存限制。 面临以下错误: -

1 .------------------------------------------ ----

memory_limit = 128M 致命错误:第19行的C:\ wamp \ www \ site \ files \ plugin \ agoda \ agoda.plugin.php中允许的内存大小为134217728(已尝试分配63个字节)

2 .------------------------------------------ ----

memory_limit = 1000M 致命错误:第19行的C:\ wamp \ www \ site \ files \ plugin \ agoda \ agoda.plugin.php中允许的内存大小为1048576000字节(试图分配1299字节)

第3 .------------------------------------------ ----

memory_limit = 2000M

我需要一种方法来在php中读取这些文件而不会破坏我的程序。

1 个答案:

答案 0 :(得分:0)

我提供此代码修改它以满足您的愿望

$source = fopen('zipcode.csv', 'r') or die("Problem open file");
    while (($data = fgetcsv($source, 1000, ",")) !== FALSE)
    {
        $zip = $data[0];
        $city = $data[1];
        $state = $data[2];
        $latitude = $data[3];
        $longitude = $data[4];
        $timezone = $data[5];
        $dst = $data[6];

        mysql_query("INSERT INTO `latlong` (`zip`,`city`,`state`,`latitude`,`longitude`,`timezone`,`dst`) VALUES (".$zip.",'".$city."','".$state."','".$latitude."','".$longitude."',".$timezone.",".$dst.")");

    }
    fclose($source);