Cách chạy file .sql trong Laravel

Cách chạy file .sql trong Laravel

Khi làm một phần mềm thì chắc hẳn chức năng backup và restore dữ liệu là một chức năng không thể thiếu rồi đúng không nào nhưng có một vấn đề là nếu file bạn xuất ra là file sql thì làm sao bạn có thể import nó lại được vào trong Mysql bằng hôm nay mình sẽ hướng dẫn các bạn cách chạy file sql trong larvel nhé.

Flow hàm chức năng của mình sẽ thực hiện những công việc như sau:

  • Đầu tiên bạn sẽ phải upload được file sql mà bạn muốn import vào cơ sở dữ liệu lên server.
  • Đọc dữ liệu từ file sql được upload lên và chạy các câu lệnh trong file sql đó để import dữ liệu vào cơ sở dữ liệu

Và để thực hiện chức năng này chúng ta cần xây dụng một hàm trong Controller của chức năng restore

<?php

namespace App\Http\Controllers;

use App\Http\Requests\Request;

use DB;

class BackupandRestoreDataController extends Controller

{

    public function Restore(Request $request)

    {

        if (!file_exists(storage_path('upload'))) {

            mkdir(storage_path('upload'));

        }

        # Lưu file đã được upload vào thư mục trên server

        $request->file->storeAs('upload', "backup.xlsx");

        $sql  = storage_path('app/upload' . '/backup.xlsx');

         // Chạy câu lệnh sql và set đồng ý kiểm tra các khoá ngoại trong bảng

        DB::statement("SET foreign_key_checks=1");

// Đọc dữ liệu từ file sql và thực hiện lệnh và sau đó chạy các lệnh sql bằng lệnh unprepared của laravel để có thể chạy được các lệnh sql raw

        

        DB::unprepared(file_get_contents($sql));

        

    }

}
Đó như vậy là bạn có thể import data vào cơ sở dữ liệu bằng file sql trong laravel rồi đó.