Cách chạy file .sql trong Laravel

Cách chạy file .sql trong Laravel

4/5 - (1 bình chọn)

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 Laravel 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 đó.

Đoàn Tuấn

Tác giả: ĐOÀN CÔNG TUẤN

Với niềm đam mê về khoa học công nghệ thông tin, đặc biệt là lập trình. Tôi đã thành lập blog Tuandc.com để lưu trữ và chia sẻ những kiến thức thực tế có được trong quá trình làm việc. Với kinh nghiệm gần 10 năm làm việc trong lĩnh vực, những kiến thức tôi chia sẻ hy vọng sẽ giúp được phần nào đó.