Ich schrieb eine Funktion in einem Controller im Laravel Framework verwendet. Die Funktion ruft den Dateipfad einer * .csv-Datei ab und fügt dann alle Elemente dieser * .csv-Datei mit einer Raw-Bulk-Insert-Anweisung in die Datenbank ein. Das Problem besteht darin, dass die Elemente bei der Ausführung der Funktion nicht in die Datenbanktabelle übernommen werden. Ich bekomme auch keine Fehler. Wenn ich die Abfrage in SQL Server Manager ausführe, fügt es die Elemente ohne Probleme ein. Was mache ich falsch und gibt es eine bessere Möglichkeit, die Elemente einer CSV-Datei in die Datenbank einzufügen?Laravel Raw Bulk einfügen
Hier ist der Code für die Funktion ist:
public static function bulkInsertCSV($filePath){
$sql = "use [testDatabase] BULK INSERT [dbo].[testTable]
FROM '" . $filePath . "' WITH (FIELDTERMINATOR = ';',"
. "ROWTERMINATOR = '\\n');";
//DB::statement($sql);
DB::statement(DB::raw($sql));
}
Mit freundlichen Grüßen, Yalcin
Dies wäre eine gute Lösung, aber ich habe vergessen zu sagen, dass die CSV bis zu 1.000.000 Zeilen mit vielen Spalten enthalten kann. Ich habe es bereits mit PHPExcel probiert und es ist wirklich langsam (ca. 10 Minuten für den Insert-Betrieb). Ihre Lösung benötigt ca. 7 Minuten. Es ist immer noch zu viel. Mit BULK INSERT in SQL dauert es ca. 1 min. Ihre Lösung ist nicht die, nach der ich suche, aber trotzdem danke :). – Yasemin