2

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

我一直在使用 Catalyst 非常好的DBIC::Schema模型,如教程中所述

$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);

但是,它不起作用。它只插入第一行。

有任何想法吗?

4

1 回答 1

3

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

于 2013-03-05T10:19:39.113 回答