В итоге я написал несколько регулярных выражений, чтобы сделать это построчно, и, в конце концов, код вполне управляем. Мне нужно будет написать собственные строки регулярных выражений для каждого файла SQL.
public function handle()
{
$sql = file_get_contents('./database/old_sql/language.sql');
preg_match_all('/\(.*\)[\,;]/', $sql, $lines);
foreach (array_shift($lines) as $line) {
preg_match('/^\((\d+)\, \'(.*)\', (\d+)\)[\,;]$/', $line, $values);
$language = Language::updateOrCreate([
'languages.id' => $values[1]
], [
'id' => $values[1],
'name' => $values[2],
'parent_id' => $values[3],
]);
}
}
Если у кого-то есть лучшее, более чистое решение, я буду рад услышать об этом.