Php импортирует только определенные строки CSV

piccolopasticcio спросил: 13 июня 2018 в 02:35 в: php

Я делаю php-скрипт для загрузки на db файла CSV. Проблема в том, что у меня много времени на очень большом CSV с более чем 1.000 строк, но мне нужна только одна, в частности одна из последних недель (например, 2018.07.01). Загрузка выполняется с использованием формы.

вот форма html

   <form action="home2.php" method="post" enctype="multipart/form-data" name="form1" id="form1"> 
      UPLOAD CSV: <br /> 
     <input name="csv" type="file" id="csv" /> 
     <input type="submit" name="submit" value="Upload" /> 

, и вот код, который я использую для загрузки всех csv в файл home2.php

if ($_FILES[csv][size] > 0) {    //get the csv file 
   $file = $_FILES[csv][tmp_name]; 
   $handle = fopen($file,"r");            //loop through the csv file and insert into database 
     do { 
       if ($data[0]) { 
       mysqli_query($con,"INSERT INTO db (id, date, hour, open, max, min, close, volume) VALUES 
            ( 
                '', 
                '".addslashes($data[0])."', 
                '".addslashes($data[1])."', 
                '".addslashes($data[2])."', 
                '".addslashes($data[3])."', 
                '".addslashes($data[4])."', 
                '".addslashes($data[5])."', 
                '".addslashes($data[6])."' 
            ) 
        "); 
    } 
} while ($data = fgetcsv($handle,1000,",","'"));

1 ответ

Есть решение
Vasyl Zhuryk ответил: 13 июня 2018 в 03:09

Я надеюсь, что этот код поможет вам

$dateFilter = "2018-07-07";if ($_FILES[csv][size] > 0) {    //get the csv file
    $file = $_FILES[csv][tmp_name];    $csvData = file_get_contents($file);
    $lines = explode(PHP_EOL, $csvData);    foreach ($lines as $line) {
        $lineArr = str_getcsv($line);        if ($lineArr[0] == $dateFilter) {
            $slashesValues = array_map('addslashes', array_values($lineArr));            mysqli_query($con, "INSERT INTO db (`date`, `hour`, `open`, `max`, `min`, `close`, `volume`) 
                                VALUES (implode(',', $slashesValues))");
        }
    }
}

Дополнительное видео по вопросу: Php импортирует только определенные строки CSV

Export Mysql Table Data to CSV file in PHP

CSV import and export into Database using PHP - part 1/2

Update Mysql Database through Upload CSV File using PHP