如何使用MySql将CSV文件上传到多个数据库表中?

问题描述 投票:0回答:1

我想将.csv文件上传到数据库中,但要在3个不同的表中。我的意思是像.csv文件中有三列,然后我想将每一列插入不同的表中。我该怎么做?任何人都可以提供任何示例或想法来进行此操作。

mysql csv
1个回答
0
投票

这里是一个示例,如果您想在db中上传csv文件,请>

public function upload(Request $request){   //upload csv

        $file = $request->file('file');
        $csvData = file_get_contents($file);
        $rows = array_map("str_getcsv", explode("\n", $csvData));

        //CSV headers
        $header = array_shift($rows);

        $escapedHeader=[];

        //to converting lowercase and remove spaces
        foreach ($header as $key => $value) {
            $lheader=strtolower($value);
            $escapedItem=preg_replace('/[^a-z]/', '', $lheader);
            array_push($escapedHeader, $escapedItem);
        }

        //storing data to database
        foreach($rows as $row) {
            if (count($header) != count($row)) {
                continue;
            }

            //This will generate a associate array with headers.
            $row = array_combine($escapedHeader, $row);//dd($row);

            // if there are 3 tables named - student, course, grade
            Student::create([
                'fname' => $row['firstname'],
                'lname' => $row['lastname'],
            ]);

            Course::create([
                'course' => $row['course'],
            ]);

            Grade::create([
                'grade' => $row['score'],
            ]);
        }

        Session::flash('message', 'CSV file imported!');

        return response()->json('success');
    }
© www.soinside.com 2019 - 2024. All rights reserved.