Php 文件内容到多个表

标签 php mysql json insert laravel-5.4

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

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

“电影”和“movies_details”

我正在使用 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 或框架查询管理器是否具有等效功能

关于Php 文件内容到多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47291160/

相关文章:

MySQL:抓取在另一个表中找不到 ID 的行

javascript - 在 Vue.js 中使用 HighCharts 绘制 json 图表

javascript - Ajax Post 上的 Json 基元无效

php - 正则表达式 - 如何从文本文件的一行中获取该值?

php - 用户 'root' @localhost mysql 错误 1045 的访问被拒绝

php - 如何在 foreach 循环的每次迭代中更改 post 值

PHP MYSQL VALUE 变量

php - 在 Multi-Tenancy 应用程序中使用 SimpleSAMLphp

php - 如何编辑此插件以显示今天在线和现在在线的帖子数大1 - MYBB onlinetoday

python - 只读取 gzip JSON 文件的第一行