【发布时间】:2019-01-12 23:37:19
【问题描述】:
我使用 laravel 5.6
我有一个包含 50 万条记录的 json 文件。我想创建一个逻辑来检查每条记录的 id 是否已经存在于数据库中。如果它不存在,那么将有一个数据插入过程。如果已经存在,会有一个数据更新过程
我已经提出了逻辑。我只是想确定我的逻辑是否有效
我的逻辑代码是这样的:
$path = storage_path('data.json');
$json = json_decode(file_get_contents($path), true);
foreach ($json['value'] as $value) {
$data = \DB::table('details')->where('id', '=', $value['Code'])->get();
if ($data->isEmpty()) {
\DB::table('details')->insert(
[
'id' => $value['Code'],
'number' => $value['Number'],
...
]
);
}
else {
\DB::table('details')
->where('id', '=', $value['Code'])
->update([
'id' => $value['Code'],
'number' => $value['Number'],
...
]);
}
}
代码正在运行。但是这个过程似乎真的很漫长
您还有其他更好的解决方案吗?
【问题讨论】:
-
如果您认为这是低效的,那您是对的;当您可能只做一个时,您正在执行 500 个选择查询。插入也可以批量完成
-
@lagbox 我只能这样做。我不知道还有其他方法。所以如果你有最好的解决方案,请回答这个问题
标签: json laravel laravel-5 eloquent laravel-5.6