iamapen/excel-friendly-data-set

此包已被废弃且不再维护。作者建议使用 iamapen/commentable-data-set 包。

DBUnit 的 Excel 亲友好用 CsvDataSet

1.1.3 2019-06-18 18:56 UTC

This package is auto-updated.

Last update: 2022-02-01 12:30:09 UTC


README

phpunit3~4/dbunit 用の DataSet や Operation の詰め合わせ。

最初は Excel で扱いやすい UTF-16(LE+BOM) の CSV を phpunit/dbunit で使うための CsvDataSet が主だったためこの名前になっているが、今後はただの拡張の詰め合わせになる予定。

※phpunit5~7 へ対応したものは別プロジェクトになりました。
今後はこちら iamapen/commentable-data-set

安装

composer.json

require-dev: {
  "iamapen/excel-friendly-data-set": ">=1.1.0"
}

用法

DataSet

DataSet/CommentableDataSet

具有将 CSV 的前 n 列处理为注释列并忽略(不导入)功能的 CsvDataSet。
可用于测试数据的注释列。

$ds = new Iamapen\ExcelFriendlyDataSet\Database\DataSet\CommentableCsvDataSet(",");
$ds->setIgnoreColumnCount(1);    // 1列目を無視

CSV 示例

最初の列はコメント,id,user_name
男性ユーザ,1,taro soramame
女性女性ユーザ,2,arare norimaki
1ヶ月以上ログインしてないユーザ,3,akane kimidori
削除されるユーザ,4,gajira norimaki

DataSet/ExcelCsvDataSet

最初创建的 DataSet。
将易于 Excel 处理的 UTF-16-LE(+BOM) 的 CSV 转换为 UTF-8 并导入。
目前似乎没有使用机会。

当时是因为 UTF-8 的 CSV 编辑软件很少,所以为了便于 Excel 处理而创建的。
然而,现在使用 LibreOffice-Calc 等编辑器可以轻松编辑 UTF-8 的 CSV,因此也不再需要特意以 UTF-16 保存以供 Excel 使用。

以下为旧 README 内容。

Excel 无法正常编辑(尤其是保存)UTF-8 的 csv,但使用 UTF-16-LE(+BOM) 则可以“拖放打开”、“Ctrl+S”保存等自然地编辑,且可以使用 Unicode 文字作为测试数据。

需要代替地在测试代码中执行 UTF-16 -> UTF-8 转换。

Excel 可以用“Unicode”,sakura 编辑器可以用“Unicode”,vim 可以用“utf16le”,mbstring 可以用“UTF-16”处理。创建新 CSV 时,在文本编辑器中创建 UTF-16 文件并将其拖放到 Excel 中会更方便。

xxTest.php

$ds = new Iamapen\ExcelFriendlyDataSet\Database\DataSet\ExcelCsvDataSet();

操作

操作/MySqlBulkInsert

PHPUnit_Extensions_Database_Operation_Insert 的批量插入版本。
MySQL专用。(虽然也可以在 SQLite 中运行)

如果输入 CSV 非常大,则可能会遇到 max_allowed_packet 的限制。这是一个问题。

use Iamapen\ExcelFriendlyDataSet\Database\DataSet\CommentableCsvDataSet;
use Iamapen\ExcelFriendlyDataSet\Database\Operation\MySqlBulkInsert;

// DataSet
$ds = new CommentableCsvDataSet('PATH/TO/CSV');

// 実行
$operation = new MySqlBulkInsert();
$operation->execute($this->getConnection(), $ds);

注意点・问题

  • 我认为现在不应该使用 DataSet/ExcelCsvDataSet。
    建议使用 UTF-8 保存,并在支持 UTF-8 的编辑器中编辑。例如,LibreOffice 的 Calc 可以做到。
    尝试在 Excel 中进行,是当时没有合适编辑器时的古老方法。

  • Operation/MySqlBulkInsert,如果输入 CSV 非常大,则可能会遇到 max_allowed_packet 的限制。

  • 为了支持 PHP-5.3,以 PHPUnit 的 3.x 和 4.x 为基础。
    很可能在 PHPUnit-5 系中无法工作。

  • 由于没有正式产品中的运行记录,因此质量处于兴趣级别。