Ich muss eine große Menge von Datensätzen in eine Datenbanktabelle einfügen. Ich erhalte die Daten aus einer CSV-Datei. Ich dachte über eine Multi-Insert-Anweisung für eine gute Leistung. Also habe ich etwas Ähnliches wie die folgenden:Laravel Multi Insert Problem mit Anführungszeichen in Wert
foreach($data as $key => $value) {
$insert[] = [
'id' => $value->id, 'is_published' => $value->is_published,
"first_name" => $value->first_name, "middle_name" => $value->middle_name, "last_name" => $value->last_name,
"description" => $value->description,
"created_at" => date("Y-m-d H:i:s",strtotime($value->created_at)),
"updated_at" => date("Y-m-d H:i:s",strtotime($value->changed_at))
];
}
if(!empty($insert)){
Model::insert($insert);
}
Aber damit habe ich immer die Fehlermeldung angezeigt:
mysql server gone away error.
Ich habe es ausgetestet, indem die Abfrage Druck und ich festgestellt, dass durch so tun, Laravel berücksichtigt nicht einfache Anführungszeichen oder doppelte Anführungszeichen im Beschreibungswert, wie es automatisch während usiung $model::save();
. Die gedruckte Abfrageversion wird unterbrochen, wenn der Beschreibungswert einfache Anführungszeichen '
oder doppelte Anführungszeichen "
enthält.
Aber wenn ich etwas tun wie
foreach($data as $key=>$value){
$model = new Model();
$model->id = $value->id;
$model->description = $value->description;
blah blah bla
$model->save();
}
Es läuft erfolgreich ohne einen Fehler zu erzeugen. Kann mir jemand sagen, wie ich dieses Problem beheben kann?
Bitte Laravel Transaktionen verwenden, um mehrere Datensätze einzufügen. – Komal
@Komal Und wie es mit meinem Problem zusammenhängt? –
wierd Verhalten ... Ich mache keine Massen-Inserts, aber ich würde versuchen: 'str_replace ('' ',' ', $ value-> Beschreibung)', nur eine Idee ... –