nomensa/bulk-inserter

v0.3.0 2018-04-06 14:12 UTC

This package is not auto-updated.

Last update: 2024-09-25 01:40:41 UTC


README

注意:此辅助库目前仅针对运行在MySQL数据库上的Laravel框架。

如果您正在对新的应用程序进行压力测试,以查看它如何处理未来真实数据量,那么您可能正在编写一个插入数千行数据的seeder。

在PHP中使用多个单独的查询逐行插入数据可能很慢,可能会阻碍开发,甚至可能违反预处理语句限制。

此包利用MySQL的原生导入功能,因此您可以在循环内部准备数据,然后通过1次快速操作将所有数据一次性放入数据库,这比多次单独插入要快得多!

安装

$ composer require --dev -- nomensa/bulk-inserter

注意:请仅将其作为开发需求进行安装。

示例

以下示例将在几秒钟内插入一千个用户

use Nomensa\BulkInserter\BulkInserter;

class ExampleSeeder
{

    public function run()
    {
        $bulkInserter = new BulkInserter('users',['name','email']);
        
        for ($i = 0; $i < 1000; $i++) {
            $bulkInserter->addRow( '("User ' . $i . '","user' . $i . '@example.com")' );
        }
        
        $bulkInserter->insert();
    }

}

如果使用Eloquent模型的方法'::create()'来完成上述任务,可能需要约20秒。

将这种延迟乘以所有模型表,考虑到在测试编写过程中您将多次调整和重新运行seeder,节省的时间会更多。使用此包可以让开发人员体验更愉快。

关于暴露漏洞的友好提醒!

此包在您的数据库中执行原始MySQL代码。请不要在生产环境中使用此包,并且绝对不要通过请求的输入来填充行的内容。

此包用于开发和测试期间,而不是日常应用程序逻辑。