【问题标题】:Adding multiple items to a model in catalyst在催化剂中向模型添加多个项目
【发布时间】:2013-02-19 16:19:23
【问题描述】:

我正在使用 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);

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

有什么想法吗?

【问题讨论】:

    标签: mysql perl catalyst


    【解决方案1】:

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

    【讨论】:

    • 这解决了它。插入操作从 30 分钟缩短到了几秒钟。非常感谢您的帮助!
    猜你喜欢
    • 2014-05-30
    • 1970-01-01
    • 2021-02-11
    • 1970-01-01
    • 2012-06-21
    • 1970-01-01
    • 1970-01-01
    • 2015-02-23
    • 2016-09-08
    相关资源
    最近更新 更多