在 Laravel 7 中导入 table daa 的迁移命令
Migration Command to import table daa in Laravel 7
通过使用迁移,我能够导入 Laravel 网站的数据库结构。但是导入数据的最佳和正确方法是什么。
迁移中有可用的命令吗?
需要帮助。我正在使用 Laravel 7.
谢谢
当您必须将 table 及其数据迁移到 Laravel 等其他项目时,此问题很常见。
建议的解决方案
将要迁移的 table 的数据转储到 .sql
文件中,然后将该文件放在文件夹中您可以访问的某个位置。为了方便起见,我们将文件放在 public
文件夹中。
创建命令以导入该 .sql
文件。
制作播种器并在 run function
中调用该命令。
实施指南
发出指令
php artisan make:command ImportXTable
此命令将在 app/Console/Commands 目录中创建一个新命令 class。
生成你的命令后,进入app/Console/Commands
目录并打开你刚刚创建的文件即ImportXTable,你应该填写class的签名和描述属性,当在列表屏幕上显示您的命令。执行命令时将调用 handle 方法。您可以将您的命令逻辑放在这个方法中。
示例脚本
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;
class ImportXTable extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'import:xtable';//this is what you will call to import table
/**
* The console command description.
*
* @var string
*/
protected $description = 'Import the .sql file for ImportXTable';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
$sql = public_path('fileNameToImport.sql');// write the sql filename here to import
DB::unprepared(file_get_contents($sql));
}
}
然后在kernel.php
的commands
数组中注册你的命令如下
protected $commands = [
Commands\ImportXTable::class,
];
播种机实施
为 Xtable 制作播种器并在播种器中调用该命令如下
<?php
use Illuminate\Database\Seeder;
class XTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
\Artisan::call('import:xtable');//calling the command to import data from .sql file to database table
}
}
现在,当您 运行 您的播种机时,文件将从转储 sql 导入到您的 table。
请记住配置您的 sql 文件以导入到您想要的 table 并保持 table 的名称相同,否则您可以在编辑器中编辑 .sql 文件
例如,您可以编辑 Sql 文件并编写此
insert into `x_table`(`column_name1`,`column_name2`,`column_name3`) values
(0,16777215,'-','-'),
............
通过使用迁移,我能够导入 Laravel 网站的数据库结构。但是导入数据的最佳和正确方法是什么。
迁移中有可用的命令吗?
需要帮助。我正在使用 Laravel 7.
谢谢
当您必须将 table 及其数据迁移到 Laravel 等其他项目时,此问题很常见。
建议的解决方案
将要迁移的 table 的数据转储到
.sql
文件中,然后将该文件放在文件夹中您可以访问的某个位置。为了方便起见,我们将文件放在public
文件夹中。创建命令以导入该
.sql
文件。制作播种器并在
run function
中调用该命令。
实施指南
发出指令
php artisan make:command ImportXTable
此命令将在 app/Console/Commands 目录中创建一个新命令 class。
生成你的命令后,进入app/Console/Commands
目录并打开你刚刚创建的文件即ImportXTable,你应该填写class的签名和描述属性,当在列表屏幕上显示您的命令。执行命令时将调用 handle 方法。您可以将您的命令逻辑放在这个方法中。
示例脚本
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;
class ImportXTable extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'import:xtable';//this is what you will call to import table
/**
* The console command description.
*
* @var string
*/
protected $description = 'Import the .sql file for ImportXTable';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
$sql = public_path('fileNameToImport.sql');// write the sql filename here to import
DB::unprepared(file_get_contents($sql));
}
}
然后在kernel.php
的commands
数组中注册你的命令如下
protected $commands = [
Commands\ImportXTable::class,
];
播种机实施
为 Xtable 制作播种器并在播种器中调用该命令如下
<?php
use Illuminate\Database\Seeder;
class XTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
\Artisan::call('import:xtable');//calling the command to import data from .sql file to database table
}
}
现在,当您 运行 您的播种机时,文件将从转储 sql 导入到您的 table。
请记住配置您的 sql 文件以导入到您想要的 table 并保持 table 的名称相同,否则您可以在编辑器中编辑 .sql 文件
例如,您可以编辑 Sql 文件并编写此
insert into `x_table`(`column_name1`,`column_name2`,`column_name3`) values
(0,16777215,'-','-'),
............