rapidwebltd / uxdm
UXDM 帮助开发者将数据从一个系统或格式迁移到另一个。
Requires
- cache/array-adapter: ^1.0
- illuminate/support: ^5.1
- psr/cache: ^1.0
- rapidwebltd/array_undot: ^1.0
- rapidwebltd/php-cli-progress-bar: ^1.0
Requires (Dev)
- fzaninotto/faker: ^1.6
- phpunit/phpunit: ^5.7
- satooshi/php-coveralls: ^2.0
- dev-master
- v1.23.0
- v1.22.0
- v1.21.0
- v1.20.1
- v1.20.0
- v1.19.1
- v1.19.0
- v1.18.0
- v1.17.5
- v1.17.4
- v1.17.3
- v1.17.2
- v1.17.1
- v1.17.0
- v1.16.1
- v1.16.0
- v1.15.5
- v1.15.4
- v1.15.3
- v1.15.2
- v1.15.1
- v1.15.0
- v1.14.2
- v1.14.1
- v1.14.0
- v1.13.0
- v1.12.0
- v1.11.3
- v1.11.2
- v1.11.1
- v1.11.0
- v1.10.0
- v1.9.0
- v1.8.0
- v1.7.0
- v1.6.1
- v1.6.0
- v1.5.0
- v1.4.0
- v1.3.0
- v1.2.1
- v1.2.0
- v1.1.1
- v1.1.0
- v1.0.0
This package is auto-updated.
Last update: 2024-09-06 10:25:19 UTC
README
UXDM 帮助开发者将数据从一个系统或格式迁移到另一个。
安装
UXDM 可以通过 Composer 轻松安装。只需从您项目的根目录运行以下命令。
composer require rapidwebltd/uxdm
如果您以前从未使用过 Composer 依赖项管理器,请访问 Composer 网站 了解如何开始。
迁移
每个 UXDM 迁移都需要一个源对象和至少一个目标对象。这些对象确定了数据读取和写入的位置和方式。UXDM 包包含多种源和目标对象,包括以下内容。
- PDO (PHP 数据库对象) 源 & 目标
- CSV (逗号分隔值) 源 & 目标
- 关联数组源 & 目标
- JSON 文件源 & 目标
- XML 源 & 目标
- WordPress 文章源
- WordPress 用户源
- 调试输出目标
源和目标对象可以任意组合使用。数据可以从 CSV 迁移到数据库,就像从数据库迁移到 CSV 一样容易。
您还可以在同一个迁移中使用类似的源和目标对象。例如,UXDM 的一个常见用法是使用 PDO 源和 PDO 目标将数据从一个数据库传输到另一个数据库。
有关其使用的更详细文档,请参阅 源 & 目标 页面。
示例
数据库到数据库迁移
以下是一个基本的数据库到数据库 UXDM 迁移示例。
$pdoSource = new PDOSource(new PDO('mysql:dbname=old-test;host=127.0.0.1', 'root', 'password123'), 'users'); $pdoDestination = new PDODestination(new PDO('mysql:dbname=new-test;host=127.0.0.1', 'root', 'password456'), 'new_users'); $migrator = new Migrator; $migrator->setSource($pdoSource) ->setDestination($pdoDestination) ->setFieldsToMigrate(['id', 'email', 'name']) ->setKeyFields(['id']) ->migrate();
此迁移将把 id
、email
和 name
字段从 old-test
数据库中的 users
表移动到 new-test
数据库中的 new_users
表,用相同的 id
(键字段)替换任何现有记录。
映射源到目标字段名称
此示例展示了 UXDM 如何映射源到目标字段名称。
$migrator = new Migrator; $migrator->setSource($pdoSource) ->setDestination($pdoDestination) ->setFieldsToMigrate(['id', 'email', 'name']) ->setKeyFields(['id']) ->setFieldMap(['name' => 'full_name']) ->migrate();
此迁移将把源 name
字段的数据移动到目标 full_name
字段,同时正常移动 id
和 email
字段。
在迁移过程中修改数据项
以下示例展示了如何使用 UXDM 在迁移过程中修改数据项。
$migrator = new Migrator; $migrator->setSource($pdoSource) ->setDestination($pdoDestination) ->setFieldsToMigrate(['id', 'email', 'name']) ->setKeyFields(['id']) ->setDataItemManipulator(function($dataItem) { if ($dataItem->fieldName=='name') { $dataItem->value = strtoupper($dataItem->value); } }) ->migrate();
此迁移将在两个数据库之间移动用户数据。但是,它还将把 name
字段中的值转换为大写。
在迁移过程中修改数据行
添加数据项
此示例展示了 UXDM 如何在迁移过程中修改每一行数据。
$migrator = new Migrator; $migrator->setSource($pdoSource) ->setDestination($pdoDestination) ->setFieldsToMigrate(['id', 'email', 'name']) ->setKeyFields(['id']) ->setDataRowManipulator(function($dataRow) { $dataRow->addDataItem(new DataItem('random_number', rand(1,1000))); }) ->migrate();
此迁移将为每一行数据添加一个随机数到 random_number
字段,然后将其与其他字段一起迁移到目标数据库。
删除数据项
此示例演示了如何从数据行中删除数据项。如果您想使用其值但不实际将其迁移到目标,可能会这样做。
$migrator = new Migrator; $migrator->setSource($pdoSource) ->setDestination($pdoDestination) ->setFieldsToMigrate(['id', 'email', 'name']) ->setKeyFields(['id']) ->setDataRowManipulator(function($dataRow) { $emailDataItem = $dataRow->getDataItemByFieldName('email'); $dataRow->addDataItem(new DataItem('email_hash', md5($emailDataItem->value))); $dataRow->removeDataItem($emailDataItem); }) ->migrate();
此迁移操作从源数据中的email
字段获取数据,创建一个新的email_hash
数据项,该数据项包含电子邮件地址的md5散列,然后删除原始的email
数据项。这个新的email_hash
将与其他字段一起迁移到目标数据库,但不包括被删除的email
字段。