2013-03-05 4 views
2

저는 Catalyst를 사용하여 Perl 웹 사이트를 구축하고 있습니다. 사이트에서는 사용자가 처리를 위해 큰 (100,000 줄 이상) 텍스트 파일을 업로드 할 수 있습니다. 각 행을 MySQL 데이터베이스의 행으로 변환해야합니다.촉매제 모델에 여러 항목 추가하기

the tutorial에 설명 된대로 내가, 촉매의 아주 좋은 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); 

그러나, 그것은 작동하지 않습니다. 첫 번째 행만 삽입합니다.

아이디어가 있으십니까?

답변

3

작성 설명서는 DBIx::Class::ResultSet docs에서 찾을 수 있습니다. 하나의 행만 삽입하고 대량 삽입의 경우 동일한 클래스의 populate을 사용할 수 있습니다.

+0

+1, 문서 링크를 이용해 주셔서 감사합니다. 나는'채우기 '를 시도 할 것이다. –

+0

이 문제가 해결되었습니다. 삽입 작업은 30 분에서 몇 초 사이에 이루어졌습니다. 귀하의 도움을 많이 주시면 감사하겠습니다! –