yuriy-sorokin / database-exporter-importer
此包用于将数据库数据导出/导入到不同的格式。目前它只支持MySQL数据库和JSON导出/导入结构。
2.0.0
2015-12-03 07:59 UTC
Requires (Dev)
- phpmd/phpmd: ^2.3
- phpunit/phpunit: 5.0.*
This package is not auto-updated.
Last update: 2024-09-14 18:52:53 UTC
README
该包的目的是从数据库中导出/导入某些数据记录。例如,你有一组相关的数据库表,代表你的用户模块。因此,你想将包含所有相关信息的用户复制到另一个已创建表的数据库中。
最好使用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
。