2010-07-23 7 views
2

나는 온도 로거를 가져온 두 세트의 데이터가있는 CSV 파일을 가지고있다. 첫 번째 두 행을 한 세트의 데이터로 나머지는 두 번째 데이터 세트로 가져 오는 방법이 있는지 궁금합니다. 나는 PHP에 익숙하지만 이런 식으로 할 필요가 전혀 없다. 아래에 데이터의 하위 집합을 첨부했습니다. 어떤 도움이나 방향을 주시면 감사하겠습니다. 감사.여러 헤더 행이있는 CSV; PHP를 사용하여 mysql로 ​​가져 오기

deceze 아래 deceze의 의견, 감사를 기반으로

아제

Serial Number,Model,Name,Number,Time of Reading,Sample Rate,Start Time 
910000000ebeaa4,DS1922T,SRBA04-240909 ,beaa-TNTVLPRP54,9/30/09 16:52,1,9/24/09 18:59 
Sample #,Date/Time,Temp ¡F,Temp ¡C,,, 
1,"Thu, Sep, 24, 06:59, PM",82.4,28,,, 
2,"Thu, Sep, 24, 07:00, PM",83.3,28.5,,, 
3,"Thu, Sep, 24, 07:01, PM",83.3,28.5,,, 
4,"Thu, Sep, 24, 07:02, PM",83.3,28.5,,, 
5,"Thu, Sep, 24, 07:03, PM",83.3,28.5,,, 
6,"Thu, Sep, 24, 07:04, PM",83.3,28.5,,, 
7,"Thu, Sep, 24, 07:05, PM",83.3,28.5,,, 
8,"Thu, Sep, 24, 07:06, PM",83.3,28.5,,, 
9,"Thu, Sep, 24, 07:07, PM",83.3,28.5,,, 
10,"Thu, Sep, 24, 07:08, PM",83.3,28.5,,, 

솔루션. 이것은 [SQL 인서트와 마찬가지로] 작동합니다. 매우 감사. 이 같은

<?php 
$fhandle = fopen('1.csv', 'r'); 

$device_header = fgetcsv($fhandle, 1000, ',');      
$device_data = fgetcsv($fhandle,1000,',');       

$device = array_combine($device_header, $device_data);   

$data_header = fgetcsv($fhandle,1000,',');       

$dataset = array();            
    while ($data = fgetcsv($fhandle,1000,',')) { 
     $dataset[] = array_combine($data_header, $data);   
} 

fclose($fhandle); 

?> 
+0

'배열, 부울 given'이 fgetcsv ($ fhandle)'에 대한 호출이'아마 어떤 점에서 'FALSE'를 반환한다는 것을 의미 것으로 기대하고있다. 좀 더 오류 처리를해야 할 것이다. 나는 단지 일반적인 접근법을 보여줄 뿐이다. 코드의 내용을 이해하지 않고 코드를 복사하여 붙여 넣기 만하면 안됩니다. SQL의 경우,'$ set1'과'$ set2' 배열로 그 데이터를 삽입 할 수 있어야합니다. 나는 당신이 추가하고 싶은 것을 이해하지 못하지만, 당신이 코드를 이해하려고 시도한다면 당신의 필요에 맞게 그것을 사용자 정의 할 수 있습니다. – deceze

+0

쿨, 고마워. 도움을 많이 주시면 감사하겠습니다. –

답변

3

뭔가를 수행해야합니다

$fhandle = fopen('/path/to/input.csv', 'r'); 

$headers = fgetcsv($fhandle); // reads first line 
$set1 = array_combine($headers, fgetcsv($fhandle)); // reads second line 

$set2 = array(); 
$headers = fgetcsv($fhandle); // reads third line 
while ($data = fgetcsv($fhandle)) { // reads all following lines 
    $set2[] = array_combine($headers, $data); 
} 

fclose($fhandle); 

/* 
$set1 == array('Serial Number' => '910000000ebeaa4', 'Model' => ...); 
$set2 == array(
    array('Sample #' => 1, 'Date/Time' => 'Thu, Sep, 24, 06:59, PM', ...), 
    ... 
); 
*/ 
+0

감사합니다. 매우 감사. –

관련 문제