rebasedata / php-client
RebaseData API 客户端用于 PHP
Requires
- php: >=7.2
Requires (Dev)
- ext-zip: *
- phpunit/phpunit: ^8
Suggests
- ext-zip: Allows compressed up- and downloads
README
介绍
此库允许使用 RebaseData API 在 PHP 中读取和转换各种数据库格式。处理数据库时,数据库首先被发送到安全的 RebaseData 服务器,然后返回转换后的数据。以下是一些示例。
依赖项
此库没有依赖项。
安装
要安装此库,您需要 Composer。
-
要使用 Composer 安装
rebasedata/php-client
,请运行以下命令php composer.phar require rebasedata/php-client "1.*"
-
然后包含 Composer 的自动加载文件,它有助于自动加载它下载的库。要使用它,只需将以下行添加到您的应用程序中
<?php require 'vendor/autoload.php'; use RebaseData\Converter\Converter; $converter = new Converter();
示例
首先,您需要定义一个或多个数据库转换的输入文件。
use RebaseData\InputFile\InputFile; $inputFile = new InputFile('/tmp/access.accdb');
您还可以定义与路径不同的输入文件名称。文件名称和扩展名对于转换很重要。
use RebaseData\InputFile\InputFile; $inputFile = new InputFile('/tmp/a1b2c3e4', 'access.accdb');
列出 ACCDB 文件的所有表。
use RebaseData\InputFile\InputFile; use RebaseData\Converter\Converter; $inputFile = new InputFile('/tmp/access.accdb'); $inputFiles = [$inputFile]; $converter = new Converter(); $database = $converter->convertToDatabase($inputFiles); $tables = $database->getTables(); foreach ($tables as $table) { echo "Got table: ".$table->getName()."\n"; }
列出受密码保护的 MSSQL BAK 文件的所有表。
use RebaseData\InputFile\InputFile; use RebaseData\Converter\Converter; $inputFile = new InputFile('/tmp/backup.bak'); $inputFiles = [$inputFile]; $converter = new Converter(); $database = $converter->convertToDatabase($inputFiles, ['password' => 'value']); $tables = $database->getTables(); foreach ($tables as $table) { echo "Got table: ".$table->getName()."\n"; }
读取 ACCDB 文件中名为 cars
的表的列。
use RebaseData\InputFile\InputFile; use RebaseData\Converter\Converter; $inputFile = new InputFile('/tmp/access.accdb'); $inputFiles = [$inputFile]; $converter = new Converter(); $database = $converter->convertToDatabase($inputFiles); $table = $database->getTable('cars'); foreach ($table->getColumns() as $column) { echo "Got column: ".$column->getName()."\n"; }
读取 ACCDB 文件中单个名为 cars
的表的行。由于我们使用的是返回迭代器的 getRowsIterator()
方法,因此该表也可以非常大,而我们占用的内存仍然很少。
use RebaseData\InputFile\InputFile; use RebaseData\Converter\Converter; $inputFile = new InputFile('/tmp/access.accdb'); $inputFiles = [$inputFile]; $converter = new Converter(); $database = $converter->convertToDatabase($inputFiles); $table = $database->getTable('cars'); foreach ($table->getRowsIterator() as $row) { echo "Got row: "; foreach ($row as $column => $value) { echo "$column = $value "; } echo "\n"; }
如果您想处理特定表的 CSV 文件,可以通过这种方式获取 CSV 文件
use RebaseData\InputFile\InputFile; use RebaseData\Converter\Converter; $inputFile = new InputFile('/tmp/access.accdb'); $inputFiles = [$inputFile]; $converter = new Converter(); $database = $converter->convertToDatabase($inputFiles); $table = $database->getTable('cars'); $destinationCsvFilePath = '/tmp/cars.csv'; $table->copyTo($destinationCsvFilePath); echo "You can find the CSV file in $destinationCsvFilePath\n";
或者您不想在 PHP 中直接处理数据?假设您想将某些输入文件转换为新的格式并将它们存储在目标目录中,以下代码片段展示了如何操作
use RebaseData\InputFile\InputFile; use RebaseData\Converter\Converter; $inputFile = new InputFile('/tmp/access.accdb'); $inputFiles = [$inputFile]; $targetDirectory = '/tmp/output/'; if (!file_exists($targetDirectory)) { mkdir($targetDirectory); } $converter = new Converter(); $converter->convertAndSaveToDirectory($inputFiles, 'mysql', $targetDirectory); echo "You can find the MySQL script file (data.sql) in the following directory: $targetDirectory\n";
同样,您可以转换输入文件到新的格式并将它们存储为 ZIP 文件
use RebaseData\InputFile\InputFile; use RebaseData\Converter\Converter; $inputFile = new InputFile('/tmp/access.accdb'); $inputFiles = [$inputFile]; $zipFile = '/tmp/output.zip'; $converter = new Converter(); $converter->convertAndSaveToZipFile($inputFiles, 'mysql', $zipFile); echo "You can find the ZIP archive that contains the MySQL script file (data.sql) here: $zipFile\n";
默认情况下,库将使用系统的临时文件夹作为工作目录。如果您想更改它,您需要调整配置
use RebaseData\Config\Config; $config = new Config(); $config->setWorkingDirectory('/tmp/rebasedata-working-dir'); $converter = new Converter($config);
如果您多次转换相同的输入文件,您可以启用本地缓存,以便将来的转换过程更快。您还可以配置缓存目录。默认情况下,缓存目录位于工作目录内部(见上文)。
use RebaseData\Config\Config; $config = new Config(); $config->setCacheEnabled(true); $config->setCacheDirectory('/tmp/cache/'); $converter = new Converter($config);
对于超过一定大小的转换,RebaseData 需要一个客户密钥,您可以在网站上购买。您可以按以下方式传递它
use RebaseData\Config\Config; use RebaseData\Converter\Converter; $config = new Config(); $config->setApiKey('secret value'); $converter = new Converter($config);
测试
要运行测试,请运行 PHPUnit 工具
./bin/phpunit
许可
此代码根据 MIT 许可证 许可。
反馈
我们很高兴收到您的反馈!您发现了错误吗?您需要额外的功能吗?在 Github 上创建一个问题,RebaseData 将尽快尝试解决您的问题!感谢您的反馈!