2017-11-14 6 views
1

私は360.000以上の行を持つファイルを持っています、すべての行はJSONです。複数のタルブにphpファイルの内容

私はLaravel 5.4を使用しているPHPの変数にJSONを読み込み、二つのテーブル

"映画" と "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行の周りに挿入することができますが、私は事を誰もこれを挿入するより速く、より良い方法を知っています。

お時間をいただきありがとうございます。あなたが複数の行との代わりに30を挿入する挿入

+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

あなたは 'チャンク'メソッドを調べましたか? – Kisaragi

+0

@RaymondNijlandはい私はこのリンクを見ました。このリンクの私の問題は: データを挿入するテーブルが1つしかありません。しかし、私は "ムービー"テーブルから挿入されたIDが必要です - テーブルには "movie_details" - テーブルの行を割り当てる – Damlo

答えて

0

あなたはそれぞれにこのようにあなたの平らなSQLのように、アレイ

をvarsの

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個の行

はそう同等の機能

関連する問題