我一直在努力创建可以将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
第一行告诉我们卫星名称。接下来的两行给出了一些参数,这些参数始终以数字1
和2
开头。此格式不会更改 - 行0
上的名称及其后面的两行,从1
或2
开始。
我希望能够为每个卫星创建一行 - 行object_name
的列0
,行tle_line1
的{{1}}行和{行1
{1}}。
我已经设法创建了一些将JSON格式的数据保存到SQL数据库中的东西。也许有些人会偏离它?
我正在使用Laravel和Guzzle来处理HTTP请求:
tle_line2
答案 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)
结果,那么您将获得以下内容:
从这个结果中,您应该可以轻松地在数据库中创建条目。图像中的每个数组都应该是数据库表中的一个条目/行。例如:
\DB::table('table_name')->insert($arrays);
请注意,如果您的表中有时间戳(created_at& updated_at),那么在生成数组时,您必须在每个数组中添加这些字段。