How to create migration from SQL dump in Laravel
Find out how to use Laravel migrations to construct migrations using SQL dump files. Use the DB::unprepared(() function when migrating a Laravel import SQL file dump.
If I were to remodel an existing project, I’d build migrations from scratch, import the dump into separate tables (or a different database, if the table names are the same), and then import the content to the new structure using seeds.
SQL dump path with DB::unprepared()
DB::unprepared(file_get_contents(database_path('data/countries.sql');
// or
DB::unprepared(file_get_contents('full/path/to/countries.sql'));
Create migration from SQL dump in up() method
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Support\Facades\DB;
return new class extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up() {
// Create tables with prerequisite data
DB::unprepared(file_get_contents(database_path('data/countries.sql');
DB::unprepared(file_get_contents(database_path('data/states.sql');
DB::unprepared(file_get_contents(database_path('data/cities.sql');
DB::unprepared(file_get_contents(database_path('data/zipcodes.sql');
DB::unprepared(file_get_contents(database_path('data/languages.sql');
DB::unprepared(file_get_contents(database_path('data/timezones.sql');
DB::unprepared(file_get_contents(database_path('data/currencies.sql');
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
// Drop tables
Schema::dropIfExists('currencies');
Schema::dropIfExists('timezones');
Schema::dropIfExists('languages');
Schema::dropIfExists('zipcodes');
Schema::dropIfExists('cities');
Schema::dropIfExists('states');
Schema::dropIfExists('countries');
}
}