2017-09-15 1 views
0

나는 txt 파일을 mySQL 데이터베이스에 저장할 수있는 무언가를 만들기 위해 고심하고 있습니다. JSON 파일은 저장하지만 txt 파일은 저장하지 않는 무언가를 만들었습니다.Laravel - mySQL 데이터베이스에 .txt 파일 저장

여기 txt 파일이 http://celestrak.com/NORAD/elements/sbas.txt입니다. 이 txt 파일에는 데이터가있는 몇 개의 위성이 있습니다. 각 위성에는 정확히 3 개의 라인이 있으며 예외는 없습니다. 예를 들어 여기에 하나의 위성이 있습니다 :

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과 그 뒤에 오는 두 줄의 이름은 1 또는 2으로 시작합니다. 열 라인 2을위한 라인 1을위한 라인 0에 대한 object_name, tle_line1tle_line2으로 - 내가 할 수 있기를 원하는 것은

는 각 위성에 대한 행을 만드는 것입니다.

JSON 형식의 데이터를 SQL 데이터베이스에 저장하는 무언가를 만들었습니다. 어쩌면 그 중 일부는 벗어날 수 있습니까? 내가 Laravel을 사용하고 HTTP 요청을 폭식하고

: 당신이 좋아하는 일을 할 수 있습니다 응답 형식은 무엇인가 잘 모르겠어요, 모든

$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

각 줄을 DB에 저장 한 다음 요청시 해당 줄을 결합하고 다운로드 용 txt 파일을 만들 수 있습니까? 그게 당신이하려는 일입니까? – Ice76

+0

@ Ice76 - 단지 txt 파일에 포함 된 데이터를 데이터베이스에 저장하려고합니다. –

답변

1

우선하지만, 바닐라 PHP를 사용하여를 가져 오기 위해 다음과 같은

: 결과가 다음 다음과 같은 것을 얻을 것이다 당신 dd($arrays) 경우

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

이제 : 배열의 내용

이 결과에서 데이터베이스에 항목을 쉽게 작성할 수 있어야합니다. image의 각 배열은 데이터베이스 테이블의 항목/행이어야합니다. 당신이 당신의 표 (& updated_at created_at) 타임 스탬프를 한 경우에, 당신은 배열을 생성 할 때 각 배열에 그 필드를 추가했습니다

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

참고 : 예를 들면.

관련 문제