Видя вас data.txt
пример кажется, что значение не очень хорошо отформатированный JSON. Для обработки такого значения сначала вам необходимо указать explode
ваши данные с \n
в качестве делиметра. Затем процеживают, чтобы избавиться от всех пустых элементов, после чего карты каждого элемента с помощью 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);
Если вы собираетесь сделать это несколько раз, рекомендуется использовать метод красноречивый модель updateOrCreate()
предотвратить дублированные строки. Вот пример:
// Uses $data value from the first example
foreach($data as $row) {
MyModel::updateOrCreate(['id' => $row['id'], $row);
}
Просто добавление в случае, если вы захотите пойти с помощью Laravel's way (Filesystem). Поместите свой 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);
}
спасибо, что это работа ..... !!! – Megandi