e282486518 2016-11-20 00:55:06 7549次浏览 3条评论 9 2 0

使用migration备份和还原数据库,最初只想做一个在命令行中备份的功能,后来将类重组了,增加了其他扩展使用方法。

安装 Installation

安装此扩展的首选方式是通过 composer.

运行

composer require --prefer-dist e282486518/yii2-console-migration "*"

或者添加

"e282486518/yii2-console-migration": "*"

composer.json 文件的对应地方.

命令行中备份数据表:

console\config\main.php中添加 :

'controllerMap' => [
    'migrates' => [
        'class' => 'e282486518\migration\ConsoleController',
    ],
],

在命令行中使用方式:

php ./yii migrates/backup all #备份全部表
php ./yii migrates/backup table1,table2,table3... #备份多张表
php ./yii migrates/backup table1 #备份一张表

php ./yii migrates/up #恢复全部表

在后台中备份数据表:

在后台的控制器中,例如PublicController中加入下面的代码:

public function actions()
{
    return [
        'backup' => [
            'class' => 'e282486518\migration\WebAction',
            'returnFormat' => 'json',
            'migrationPath' => '@console/migrations'
        ]
    ];
}

在后台中发送一个ajax请求到/admin/public/backup?tables=yii2_ad,yii2_admin即可。

其他使用方法:

对于想做更多扩展的朋友,可以直接继承e282486518\migration\components\MigrateCreate

或者使用一下代码:

$migrate = Yii::createObject([
        'class' => 'e282486518\migration\components\MigrateCreate',
        'migrationPath' => $this->migrationPath
]);
$migrate->create($table);

生成的文件截图:

截图

觉得很赞
  • 评论于 2016-12-13 20:45 举报

    有手动备份的那种吗?
    不想要命令行的。

    1 条回复
    评论于 2016-12-14 09:44 回复

    可以“在后台中备份数据表”,或者是“其他使用方法”

  • 评论于 2016-11-25 10:09 举报

    这样insert你试试几万条数据看看要多久。最好还是生成batchInsert

    1 条回复
    评论于 2016-11-25 20:03 回复

    嗯,是要改改,测试了导入几千条城市数据都用了快10秒

  • 评论于 2016-11-21 19:00 举报

    只是备份表结构的是么?

    1 条回复
    评论于 2016-11-21 22:29 回复

    表数据也备份啊。。截图中的$this->insert就是数据。

您需要登录后才可以评论。登录 | 立即注册