在催化剂中向模型添加多个项目

时间:2013-03-05 10:00:29

标签: mysql perl catalyst

我正在使用Catalyst构建一个Perl网站。该网站将允许用户上传大量(100,000行或更多)文本文件进行处理。我需要将每一行转换为MySQL数据库中的一行。

我一直在使用Catalyst非常好的DBIC::Schema模型,详见the tutorial

$c->model('DB::Book')->create({
        title   => $title,
        rating  => $rating,
    });

这会在适当的数据库中插入一行。但是,一次插入数万行是太慢了。有没有办法使用此接口通过一个查询插入多行?

从文档中确定应该很简单,但我无法弄清楚create()的记录位置。

我已经尝试了一个显而易见的哈希引用数组:

my @rows = (
    { foo=>1,bar=>2 },
    { foo=>2,bar=>3 }
);

$c->model('DB::MyTable')->create(@rows);

然而,它不起作用。它只插入第一行。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

可以在DBIx::Class::ResultSet docs中找到创建文档。 create只插入一行,对于批量插入,您可以使用同一类中的populate