看到data.txt 示例,该值似乎不是格式正确的 JSON。要首先处理这种值,您需要使用\n 作为分隔符explode 您的数据。然后过滤它以消除所有空元素,然后使用json_decode映射每个项目,这应该可以工作:
$data = file_get_contents('path/to/data.txt');
$data = array_filter(explode("\n", $data));
$data = array_map(function ($item) {
return json_decode($item, true);
}, $data);
// Insert to your database table
DB::table('mytable')->insert($data);
如果您data.txt 包含格式良好的 JSON,那么您可以跳过爆炸、过滤和映射步骤:
$data = file_get_contents('path/to/data.txt');
// Insert to your database table
DB::table('mytable')->insert($data);
如果你要多做一次,建议使用 eloquent 模型updateOrCreate() 方法来防止重复行。这是一个例子:
// Uses $data value from the first example
foreach($data as $row) {
MyModel::updateOrCreate(['id' => $row['id'], $row);
}
如果你想使用 Laravel 的方式(文件系统),只是一个补充。将您的data.txt 放入storage/app 文件夹,然后使用Storage 外观检索数据。
$data = Storage::get('data.txt');
$data = array_filter(explode("\n", $data));
$data = array_map(function ($item) {
return json_decode($item, true);
}, $data);
DB::table('mytable')->insert($data);
// Or
foreach($data as $row) {
MyModel::updateOrCreate(['id' => $row['id'], $row);
}