sql >> データベース >  >> RDS >> Mysql

タイムアウトせずに大きなCSVファイルを解析するにはどうすればよいですか?

    次のようなことができます:

    <?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); 行をループするたびに、タイムアウトの問題が修正される場合があります。



    1. SQL連絡先からの最新の写真(連絡先ごとにグループ化)

    2. 配列PHPの配列にアクセスする

    3. Oracleで文字列から日付を取得する方法

    4. ユーザーがPHPを使用してMySQLにすでに存在するかどうかを確認する方法