db = $db; } public function addSource(string $source) { $this->sources[] = $source; $this->sources = array_unique($this->sources); } public function setSources(array $sources) /* : void */ { $this->sources = $sources; } public function autoIdentifyCsvSettings(bool $identify) { $this->autoIdentifyCsvSettings = $identify; } public function setLineBuffer(int $buffer) /* : void */ { $this->lineBuffer = $buffer; } public function insert() { foreach ($this->sources as $source) { $file = fopen($source, 'r'); $header = []; $delimiter = $this->autoIdentifyCsvSettings ? $this->getFileDelimiter($file, 100) : $this->delimiter; if (feof($file) && ($line = fgetcsv($file, 0, $delimiter)) !== false) { $header = $line; } $query = new Builder($this->db); $query->insert(...$header)->into(str_replace(' ', '', explode($source, '.'))); while (feof($file)) { $c = 0; while (($line = fgetcsv($file)) !== false && $c < $this->lineBuffer && feof($file)) { $query->values($line); $c++; } $this->db->con->prepare($query->toSql())->execute(); } fclose($file); } } }