yuriy-sorokin/database-exporter-importer

此包用于将数据库数据导出/导入到不同的格式。目前它只支持MySQL数据库和JSON导出/导入结构。

2.0.0 2015-12-03 07:59 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:52:53 UTC


README

License Latest Stable Version Total Downloads

该包的目的是从数据库中导出/导入某些数据记录。例如,你有一组相关的数据库表,代表你的用户模块。因此,你想将包含所有相关信息的用户复制到另一个已创建表的数据库中。

最好使用DI容器来简化该包的使用。

导出

<?php
$connection = new \PDO('mysql:dbname=DATABASE_NAME;host=HOST', 'USER', 'PASSWORD');

$columnsProvider = new MySqlTableColumnsProvider($connection);
$tablesProvider = new MySqlTablesProvider($columnsProvider);
$tablesProvider->setConnection($connection);

$dataProvider = new MySqlDataProvider($tablesProvider);
$dataProvider
    ->setConnection($connection)
    ->setForeignValueProvider(new TableForeignKeysValuesProvider())
    ->setPrimaryTableName('maker')
    ->setPrimaryKeyColumn('id')
    ->setPrimaryKey(1);

$exporter = new JsonDataExporter();
$data = $exporter
    ->setColumnsExporter(new JsonTableColumnsExporter())
    ->setDataRowsExporter(new JsonTableDataRowsExporter())
    ->setDataProvider($dataProvider)
    ->getData();

最后,这个$data变量包含一个准备导入的JSON字符串。注意,在导入时,根表的自增值会重置。

导入

<?php
$connection = new \PDO('mysql:dbname=DATABASE_NAME;host=HOST', 'USER', 'PASSWORD');

$dataParser = new JsonDataParser();
$dataParser
    ->setColumnsCreator(new JsonColumnsCreator())
    ->setDataRowsCreator(new JsonDataRowsCreator())
    ->setData($data);

$subject = new MySqlDataImporter();
$subject
    ->setConnection($connection)
    ->setDataParser($dataParser)
    ->setObserver(new AutoIncrementObserver(new ForeignKeyColumnsFinder()))
    ->setAutoIncrementFinder(new AutoIncrementTableColumnFinder())
    ->import();

目前它只支持MySQL数据库和JSON导出/导入结构。

测试数据库转储位于dump.sql.gz