是否有任何 Laravel 方法来执行 .SQL 文件来加载数据

Posted

技术标签:

【中文标题】是否有任何 Laravel 方法来执行 .SQL 文件来加载数据【英文标题】:Is there any Laravel way to execute a .SQL file to load data 【发布时间】:2016-02-23 05:55:04 【问题描述】:

我有想要加载到新数据库中的历史数据。

我可以通过运行 mysql 命令来做到这一点,但我很想知道是否有 artisan 命令可以做到这一点?

【问题讨论】:

【参考方案1】:

无法使用artisan 直接导入数据库转储。但是,您可以创建自定义 artisan 命令:

php artisan make:console DbImportCommand

然后让它发出如下命令:

DB::unprepared(file_get_contents('full/path/to/dump.sql'));

但是,创建一个运行播种器(或播种器集)的命令可能是有利的。

php artisan make:console importHistoricalData

然后运行特定的播种机:

$this->call(OldCompanySeeder::class);
$this->call(OldEmployeeSeeder::class);
// etc....

如果您在某个时候擦除数据库,或者迁移到新环境,这就像再次运行播种机一样简单。

【讨论】:

我确实知道播种机,但我在这里导入了数千条记录。 那我的第一个建议可能更合适。您也可以在这里查看 Seeders:laravel.com/docs/5.1/seeding

以上是关于是否有任何 Laravel 方法来执行 .SQL 文件来加载数据的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 4 级联软删除

加入彼此不相关的表laravel

Laravel / Eloquent 模型关系查看器

是否有任何经验法则可以根据人类可读的描述构造 SQL 查询?

Laravel 原始 SQL 查询,具有多次出现的命名绑定

是否有任何用于 Laravel 包的 Backpack 允许实时 AJAX CRUD 编辑?