Laravel - 将.txt文件保存到mySQL数据库

时间:2017-09-15 22:40:59

标签: php mysql laravel laravel-5.4

我一直在努力创建可以将txt文件保存到mySQL数据库的东西。我设法创建了一些节省JSON文件而不是txt文件的东西。

以下是有问题的txt文件:http://celestrak.com/NORAD/elements/sbas.txt。这个txt文件包含一些带有数据的卫星。每颗卫星都有三条线,没有例外。所以,例如这里有一颗卫星:

AOR-E (EGNOS/PRN 120)   
1 24307U 96053A   17257.68868765 -.00000150  00000-0  00000-0 0  9992
2 24307   2.8040  77.2609 0004175 104.1816  44.8421  1.00271450 76939

第一行告诉我们卫星名称。接下来的两行给出了一些参数,这些参数始终以数字12开头。此格式不会更改 - 行0上的名称及其后面的两行,从12开始。

我希望能够为每个卫星创建一行 - 行object_name的列0,行tle_line1的{​​{1}}行和{行1 {1}}。

我已经设法创建了一些将JSON格式的数据保存到SQL数据库中的东西。也许有些人会偏离它?

我正在使用Laravel和Guzzle来处理HTTP请求:

tle_line2

1 个答案:

答案 0 :(得分:1)

首先,我不确定你的响应格式是什么,但是使用vanilla PHP你可能会做类似以下的事情来获取数组中的内容:

$url = 'http://celestrak.com/NORAD/elements/sbas.txt';
$lines = file($url, FILE_IGNORE_NEW_LINES);
$arrays = array_map(function($array) {
    $columns = ['object_name', 'tle_line1', 'tle_line2'];
    return array_combine($columns, array_map('trim', $array));
}, array_chunk($lines, 3));

现在,如果您dd($arrays)结果,那么您将获得以下内容:

enter image description here

从这个结果中,您应该可以轻松地在数据库中创建条目。图像中的每个数组都应该是数据库表中的一个条目/行。例如:

\DB::table('table_name')->insert($arrays);

请注意,如果您的表中有时间戳(created_at& updated_at),那么在生成数组时,您必须在每个数组中添加这些字段。