2017-09-15 1 views
0

Ich habe etwas zu schaffen, zu kämpfen, die txt-Dateien in eine mySQL-Datenbank speichern. Ich habe es geschafft, etwas zu erstellen, das JSON-Dateien speichert, aber keine TXT-Dateien.Laravel - Speicher eine TXT-Datei mySQL Datenbank

Hier ist die txt-Datei in Frage: http://celestrak.com/NORAD/elements/sbas.txt. Diese TXT-Datei enthält einige Satelliten mit ihren Daten. Jeder Satellit hat genau drei Zeilen, keine Ausnahmen. So zum Beispiel hier ist ein Satellit:

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 

Die ersten Zeilen sagen uns, den Namen des Satelliten. Die nächsten beiden Zeilen geben uns einige Parameter, die immer mit den Zahlen 1 und 2 starten. Dieses Format wird sich nicht ändern - den Namen auf der Leitung 0 und die beiden Linien, nachdem sie, die in 1 oder 2 starten.

Was ich in der Lage sein zu wollen, ist eine Zeile für jeden Satelliten zu schaffen - mit den Spalten object_name für Zeile 0, tle_line1 für Zeile 1 und tle_line2 für Zeile 2.

Ich habe es geschafft, etwas zu erstellen, das Daten aus einem JSON-Format in die SQL-Datenbank speichert. Vielleicht können einige davon abweichen?

ich Laravel verwende und Guzzle für die HTTP-Anfragen:

$api = new Client([ 
    'base_uri' => 'http://celestrak.com', 
]); 
$response = $api->get('jsonlocater'); 
$data = json_decode($response->getBody()->getContents(), true); 
    foreach ($data as $attributes) { 
    $attributes = array_change_key_case($attributes, CASE_LOWER); 
    Satellites::create($attributes); 
} 
+0

Sie könnten jede Zeile in einer DB speichern, dann auf Wunsch diese Zeilen kombinieren und die txt-Datei zum Download erstellen? Versuchen Sie das zu tun? – Ice76

+0

@ Ice76 - Ich möchte nur die Daten in der TXT-Datei in der Datenbank gespeichert speichern. –

Antwort

1

Zunächst einmal, ich bin nicht sicher, was ist Ihre Antwort-Format, aber mit Vanille PHP Sie so etwas wie das tun kann nach dem holen Inhalte in Array:

$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)); 

Nun, wenn Sie dd($arrays) das Ergebnis dann werden Sie in etwa wie folgt erhalten:

enter image description here

Aus diesem Ergebnis sollten Sie leicht in der Lage sein, Einträge in der Datenbank zu erstellen. Jedes Array im Bild sollte ein Eintrag/Zeile in Ihrer Datenbanktabelle sein. Zum Beispiel:

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

Beachten Sie, dass, wenn Sie Zeitstempel (created_at & updated_at) in der Tabelle haben dann haben Sie diese Felder in jedem Array hinzufügen, wenn die Arrays zu erzeugen.