Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm cách nào để phân tích cú pháp tệp CSV lớn mà không bị hết thời gian?

Bạn có thể làm điều gì đó như sau:

<?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); Mỗi khi bạn lặp lại một dòng có thể khắc phục sự cố hết thời gian chờ của bạn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql INSTR như hoạt động trong mongodb

  2. Tạo TinyURL của riêng bạn

  3. utf-8 so với latin1

  4. python - Sự cố khi lưu ký tự Unicode sang MySQL với Django

  5. Có thể bắt giá trị không hợp lệ trong MySQL khi tôi gặp lỗi ràng buộc khóa ngoại không?