iamapen / excel-friendly-data-set
Requires
- php: >=5.3.3
- ext-mbstring: *
- ext-pdo: *
Requires (Dev)
- phpdocumentor/reflection-docblock: ~2.0.4
- phpunit/dbunit: ~1.2
- phpunit/phpunit: ~4.8
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 系中无法工作。 -
由于没有正式产品中的运行记录,因此质量处于兴趣级别。