2017-11-14 17 views
1

360.000 이상의 행이있는 파일이 있습니다. 모든 행은 JSON입니다. PHP 여러 개의 Talbes에 파일 내용

i는 PHP 변수로 JSON을 읽고 난 Laravel 5.4을 사용하고 두 테이블

"영화"와 "movies_details"

에 삽입합니다. 내 문제는 성능입니다. 그래서이 코드

$idMovie = DB::table('movies') 
    ->insertGetId([ 
     'moviedb_id' => $id, 
     'adult' => $adult, 
     'created_at' => $dateTime, 
    ]); 
    DB::table('movies_title') 
     ->insert([ 
      'movie_id' => $idMovie, 
      'original_title' => $original_title, 
      'created_at' => $dateTime, 
     ]); 

으로 1 분에 대해 35 ~ 40 행을 라운드 삽입 할 수 있습니다하지만 난 일이 사람이를 삽입하는 빠르고 더 나은 방법을 알고있다.

감사합니다.

+0

MySQL 용 행해져 Yout ORM 또는 프레임 워크 쿼리 매니저를 확인 그래서'INSERT 같은 다중 삽입을 지원합니다 INTO movie_title (movie_id, original_title, created_at) VALUES (1, 'title', '2017-11-14'), (2, 'title', '2017-11-14')'.... 등등. 이것은 도움이 될 수 있습니다. https://stackoverflow.com/questions/29723865/how-to-insert-multiple-rows-from-a-single-query-using-eloquent-fluent –

+0

'chunk' 메소드를 들여다 보았습니까? – Kisaragi

+0

@RaymondNijland 예 그렇습니다.이 링크를 보았습니다. 이 링크의 문제점은 다음과 같습니다. 데이터를 삽입 할 테이블이 하나뿐입니다. 하지만 "영화"테이블에서 삽입 된 ID가 필요합니다 - "movie_details"의 행을 할당하는 표 - 표 – Damlo

답변

0

당신은 당신이 더 행과 대신 30을 삽입 삽입하여 각이 방법으로 평면 SQL

insert into your_table (moviedb_id, adult, created_at) 
    values ($id[0], $adult[0], $dateTime[0]), 
      ($id[1], $adult[1], $dateTime[1]), 

      ...... 
      ...... 
      ($id[n], $adult[n], $dateTime[n]) 

같이 배열

를 바르 할당 할 수 있습니다 가정 다수의 삽입 (대량 삽입)을 사용할 수 있습니다 - 40 분 동안 당신은 30 * N 삽입 할 수 있습니다 - 40 * N 행

그렇게 동등한 기능