Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak przeanalizować duży plik CSV bez limitu czasu?

Możesz zrobić coś takiego:

<?php

namespace database;

class importcsv
{
    private $crud;

    public function __construct($dbh, $table)
    {
        $this->crud = new \database\crud($dbh, $table);
        return $this;
    }

    public function import($columnNames, $csv, $seperator)
    {
        $lines = explode("\n", $csv);

        foreach($lines as $line)
        {
            \set_time_limit(30);
            $line = explode($seperator, $line);

            $data = new \stdClass();

            foreach($line as $i => $item) 
            {
                if(isset($columnNames[$i])&&!empty($columnNames[$i]))
                    $data->$columnNames[$i] = $item;
            }

            @$x++;

            $this->crud->create($data);
        }

        return $x;
    }

    public function importFile($columnNames, $csvPath, $seperator)
    {
        if(file_exists($csvPath))
        {
            $content = file_get_contents($csvPath);
            return $this->import($columnNames, $content, $seperator);
        }
        else
        {
            // Error
        }
    }
}

TL; DR:\set_time_limit(30); za każdym razem, gdy zapętlisz się po linii, możesz rozwiązać problemy z przekroczeniem limitu czasu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak sprawdzić, czy połączenie MySQL jest otwarte w Pythonie?

  2. Dodanie tylko jednej wartości do tabeli w sql

  3. Zarządzanie kontami użytkowników, role, uprawnienia, uwierzytelnianie PHP i MySQL - Część 6

  4. Transformacja wiersza do kolumny z różnych tabel (unia) w MySQL w wersji 8.0.17 przy użyciu Pivot

  5. PHP:koncepcja systemu oceny gwiazdek?