petrknap/php-migrationtool

v3.0.0-rc1 2019-05-08 08:35 UTC

README

什么是迁移?

数据迁移 是在存储类型、格式或计算机系统之间传输数据的过程。它是任何系统实施、升级或整合的关键考虑因素。数据迁移通常通过程序化执行以实现自动化迁移,从而释放人力资源,使其从繁琐的任务中解脱出来。数据迁移有多种原因,包括服务器或存储设备更换、维护或升级、应用迁移、网站整合和数据中心迁移。

-- 数据迁移 - 维基百科,自由的百科全书

php-migrationtool的使用方法

迁移文件

迁移文件放置在特殊目录(如 /migrations)中。迁移文件名包含三个部分:迁移ID、空格分隔的描述(可选)和点号分隔的扩展名(可选)——有效迁移文件名可以是 {id}{id}.{extension}{id} {description}{id} {description}.{extension}

user@localhost:~/project/migrations$ ls
M0001  M0002.ext  M0003 - Third migration  M0004 - Fourth migration.ext

迁移工具按目录中文件名的顺序(升序)处理 所有文件。如果应用任何迁移文件时抛出异常,则此文件引起的更改将被取消,迁移工具将停止。

迁移工具还包含已应用迁移的列表,并保证每个文件只会被处理一次,并且仅在不存在ID更高的已应用迁移时才会处理。

迁移工具

所有迁移工具都实现了带有 migrate() 方法的 MigrationToolInterface

<?php

/**
 * @var $tool PetrKnap\Php\MigrationTool\MigrationToolInterface
 */
$tool->migrate();

SQL迁移工具

警告: SQL迁移工具仅处理扩展名为 sql 的文件。

<?php

/** @var \Doctrine\DBAL\Connection $connection */
$tool = new PetrKnap\Php\MigrationTool\SqlMigrationTool(
    __DIR__ . '/migrations',
    $connection
);

/** @var \Psr\Log\LoggerInterface $logger */
$tool->setLogger($logger);
$tool->migrate();

SQL迁移工具 支持原生SQL文件 作为迁移文件。您可以简单地将 orm:schema-tool:update --dump-sqlphpMyAdminAdminer 或任何具有SQL输出的工具的输出复制粘贴到迁移文件中。

如何安装

运行 composer require petrknap/php-migrationtool 或手动将此JSON代码与您的项目 composer.json 文件合并,然后运行 composer install。您可以使用 已发布版本之一 而不是 dev-master

{
    "require": {
        "petrknap/php-migrationtool": "dev-master"
    }
}

或者,您可以手动通过 git clone https://github.com/petrknap/php-migrationtool.git 克隆此存储库或下载 此存储库的ZIP文件 并将其文件提取到您的项目中。