开发者

CSV with multiple header rows; import into mysql using php

开发者 https://www.devze.com 2023-01-08 06:55 出处:网络
I\'ve got a CSV file with two sets of data in it [its pulled of a temperature logger]. I\'m wondering if there\'s a way to import the first two rows as one set of data and the rest as a second set of

I've got a CSV file with two sets of data in it [its pulled of a temperature logger]. I'm wondering if there's a way to import the first two rows as one set of data and the rest as a second set of data. I'm familiar with PHP, but have never had to do anything like this. I've attached a subset of data below. Any help or direction would be greatly appreciated. Thanks.

Ajay

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,,,

solution, based on deceze's comment below

deceze, thanks. this works [as does the sql insert]. much appreciated.

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

?>


Something like this should do it:

$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

精彩评论

暂无评论...
验证码 换一张
取 消