将Php文件内容转换为多个Talbes

将Php文件内容转换为多个Talbes,php,mysql,json,insert,laravel-5.4,Php,Mysql,Json,Insert,Laravel 5.4,我有一个超过360.000行的文件,每行都是JSON 我将Json读入Php变量并将其插入两个表中 “电影”和“电影详情” 我用的是Laravel 5.4。 我的问题是性能。 所以我可以用这个代码在一分钟内插入大约35-40行 $idMovie = DB::table('movies') ->insertGetId([ 'moviedb_id' => $id, 'adult' => $adult, 'created_at' =&g

我有一个超过360.000行的文件,每行都是JSON

我将Json读入Php变量并将其插入两个表中

“电影”和“电影详情”

我用的是Laravel 5.4。 我的问题是性能。 所以我可以用这个代码在一分钟内插入大约35-40行

$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,
      ]);
但我想任何人都知道一种更快更好的插入方法


谢谢您的时间。

您可以使用多个插入(大容量插入),前提是您可以为变量分配一个数组

就像在平面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])
这样,每次插入时,您可以插入更多行,而不是30-40分钟,您可以插入30*n-40*n行


因此,请检查ORM或框架查询管理器的等效功能

如果可以为变量分配数组,则可以使用多重插入(大容量插入)

就像在平面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])
这样,每次插入时,您可以插入更多行,而不是30-40分钟,您可以插入30*n-40*n行


因此,请检查yout ORM或框架查询管理器的等效功能

MySQL支持多插入,如so
insert-INTO-movie\u title(movie\u id,original\u title,created\u at)值(1,'title',2017-11-14'),(2,'title',2017-11-14')
。。。。等等这可能有助于您了解
方法吗?@RaymondNijland是的,我看到了这个链接。我对这个链接的问题是:它们只有一个表可以插入这些数据。但是我需要从“Movie”-表中插入ID,将其与“Movie\u details”-表中的行一起分配。MySQL支持多次插入,例如
insert-INTO-Movie\u title(Movie\u ID,original\u title,created\u at)值(1,'title',2017-11-14'),(2,'title',2017-11-14')
。。。。等等这可能有助于您了解
方法吗?@RaymondNijland是的,我看到了这个链接。我对这个链接的问题是:它们只有一个表可以插入这些数据。但是我需要从“Movie”-表中插入ID,以便将其与“Movie\u details”-表中的行一起分配