burn / yii2-db-archiver
DbArchiver 通过 Yii2 ActiveRecord 模型从数据库中存档和恢复旧数据。对于大型表格,允许直接从 MySQL 数据库导出文件(快速存档,但文件仅保存于 MySQL 服务器驱动器上)。
1.0.2
2015-07-16 10:03 UTC
Requires
- php: >=5.4.0
- yiisoft/yii2: *
This package is auto-updated.
Last update: 2024-08-28 21:28:38 UTC
README
这是什么?
DbArchiver 通过 Yii2 ActiveRecord 模型从数据库中存档和恢复旧数据。对于大型表格,允许直接从 MySQL 数据库导出文件(快速存档,但文件仅保存于 MySQL 服务器驱动器上)。
安装
使用它需要 Yii2 框架和 PHP 5.4 或更高版本。
建议通过 [composer][] 在您的 composer.json
中的 require
部分添加以下内容进行安装:
"burn/yii2-db-archiver": "dev-master"
之后运行 composer update
。
使用方法
首先在主应用配置中设置 dbArchiver 组件,如下所示
'components' => [
'dbArchiver' => [
'class' => 'burn\dbArchiver\DbArchiver',
'dumpPath' => '/home/'
]
],
示例控制台动作,使用 DbArchiver 组件对大型表格进行直接存档和以 Unix 时间戳格式存储的日期列
/**
* @throws \yii\base\InvalidConfigException
*/
public function actionArchiveErrorsLog()
{
/** @var \burn\dbArchiver\DbArchiver $dbArchiver */
$dbArchiver = \Yii::$app->get('dbArchiver');
$dbArchiver
->getQuery()
->setArchivedModel(LogError::className())
->setDirect(true)
->setDateColumn('log_time')
->setMkTimeDateColumn(true);
if (!$dbArchiver->actionArchive()) {
\Yii::error(LogError::tableName() . ' table not archived!');
echo 'Something went wrong! '. LogError::tableName() . ' table not archived!';
}
}
恢复控制台动作的示例
/**
* @throws \yii\base\InvalidConfigException
*/
public function actionRestoreErrorsLog($filename)
{
/** @var \burn\dbArchiver\DbArchiver $dbArchiver */
$dbArchiver = \Yii::$app->get('dbArchiver');
$dbArchiver
->getQuery()
->setArchivedModel(LogError::className())
->setDirect(true);
if (!$dbArchiver->actionRestoreFromFile($filename)) {
\Yii::error(LogError::tableName() . ' table not restored!');
echo 'Something went wrong! '. LogError::tableName() . ' table not restored!';
}
}