Jump to content

CSV Import Array


viviosoft

Recommended Posts

Hello all -

 

Currently I have functions that will parse a csv file and insert the values into a database.  That code is working.  However, I want to take it a step further and ONLY insert selected fields from the csv file.  For example, I have 14 rows in the csv and of those I only want to import values into the database of the rows that I define. 

 

So, gName, fName and id -> take those and pump those values into the database.  I'm sure this a possible but not sure of the direction I should take.  Any help on my problem would be excellent!

 

Here's the code:

 

csv_file_to_mysql_table('tim 3.csv', 'growers');

function csv_file_to_mysql_table($source_file, $target_table, $max_line_length = 10000)
{
    if (($handle = fopen("$source_file", "r")) !== FALSE) {
        $columns = fgetcsv($handle, $max_line_length, ",");
        foreach ($columns as &$column) {
            $column = str_replace(".", "", $column);
        }

        $insert_query_prefix = "INSERT INTO $target_table (" . join(",", $columns) . ")\nVALUES";
        while (($data = fgetcsv($handle, $max_line_length, ",")) !== FALSE) {

            while (count($data) < count($columns))

                array_push($data, NULL);

            $query = "$insert_query_prefix (" . join(",", quote_all_array($data)) . ");";
            mysql_query($query) or die(mysql_error());

        }

        fclose($handle);
    }
}

function quote_all_array($values)
{
    foreach ($values as $key => $value)
        if (is_array($value))
            $values[$key] = quote_all_array($value);
        else
            $values[$key] = quote_all($value);
    return $values;
}

function quote_all($value)
{
    if (is_null($value))
        return "NULL";

    $value = "'" . mysql_real_escape_string($value) . "'";
    return $value;
}

 

 

Here's some sample data:

 

Long,Lat,id,gName,fId,fName,fldId,fldName,fldAcers,featureID,objID,fInsu,fFSA,fBid
-82.38306422,40.38439870,2,Norris| Tim,3,Hallinan,4,H1 - 10.0,9.900,1,1, , ,29
-82.22279060,40.42760230,2,Norris| Tim,4,Holt,5,Ho1,11.50,1,1, , ,30
-82.21917211,40.42838107,2,Norris| Tim,4,Holt,6,Ho2,15.10,1,1, , ,31
-82.21710436,40.42454375,2,Norris| Tim,4,Holt,7,Ho3,17.90,1,1, , ,32
-82.21833571,40.42367314,2,Norris| Tim,4,Holt,7,Ho3,17.90,2,2, , ,32
-82.21595345,40.42200315,2,Norris| Tim,4,Holt,9,Ho4,9.100,1,1, , ,34
-82.36538195,40.37711617,2,Norris| Tim,5,Home,10,H1 - 36.3A,36.20,1,1, , ,35
-82.36159625,40.37804250,2,Norris| Tim,5,Home,11,H2 - 3.9A,3.900,1,1, , ,36
-82.36196265,40.38085335,2,Norris| Tim,5,Home,12,H3 - 6A,7.000,1,1, , ,37
-82.41030962,40.38997625,2,Norris| Tim,2,Kenyon,13,K10-17A,17.00,1,1, , ,38
-82.38584288,40.35998635,2,Norris| Tim,2,Kenyon,14,K11-14A,14.52,1,1, , ,39
-82.41644710,40.37927258,2,Norris| Tim,2,Kenyon,15,K3 - 18.2A,18.20,1,1, , ,40
-82.40744700,40.37788250,2,Norris| Tim,2,Kenyon,16,K4 - 26.2A,26.12,1,1, , ,41
-82.40390048,40.37467350,2,Norris| Tim,2,Kenyon,17,K5 - 8.9A,8.874,1,1, , ,42
-82.38605720,40.36920760,2,Norris| Tim,2,Kenyon,18,K6 - 19.3A,18.22,1,1, , ,43
-82.39960597,40.38844915,2,Norris| Tim,2,Kenyon,19,K7 - 18.4A,18.37,1,1, , ,44
-82.39515150,40.39498212,2,Norris| Tim,2,Kenyon,20,K8 - 7.3A,7.324,1,1, , ,45
-82.38817795,40.39458225,2,Norris| Tim,2,Kenyon,21,K9 - 40.4A,40.28,1,1, , ,46
-82.38836722,40.39172487,2,Norris| Tim,2,Kenyon,21,K9 - 40.4A,40.28,2,2, , ,46
-82.40294059,40.35565598,2,Norris| Tim,10,Lane,2,1,6.900,1,1, , ,47
-82.40579843,40.35399913,2,Norris| Tim,10,Lane,22,2,7.200,1,1, , ,48
-82.38322795,40.37619695,2,Norris| Tim,6,Leach,23,L1 - 1.5,1.500,1,1, , ,49
-82.38334655,40.38060737,2,Norris| Tim,6,Leach,24,L2 - 17.6,17.60,1,1, , ,50
-82.38032235,40.38354262,2,Norris| Tim,7,Robinson,25,R1 - 7.5,7.400,1,1, , ,51
-82.39919331,40.35353322,2,Norris| Tim,9,Shorey,26,SH1,5.757,1,1, , ,52
-82.40033216,40.35715336,2,Norris| Tim,9,Shorey,28,SH2,13.39,1,1, , ,54
-82.37072642,40.31789197,2,Norris| Tim,8,Stream,27,S1,17.80,1,1, , ,53

Link to comment
https://forums.phpfreaks.com/topic/260130-csv-import-array/
Share on other sites

Haha, really Muddy_Funster!  This is how you respond?  Why even leave a reply?  What I take from your response is that you don't know how to answer the question or you don't know what I want to accomplish or (the real reason I think) you don't know how to do what I want.  You should stay off this forum and let the REAL professionals reply.

Link to comment
https://forums.phpfreaks.com/topic/260130-csv-import-array/#findComment-1333363
Share on other sites

This may help -

<?PHP
$w_file = "NAME_OF_YOUR_CSV_FILE";
/* put the contents into an array */
/* presumes the file does NOT contain Long,Lat,id,gName,fId,fName,fldId,fldName,fldAcers,featureID,objID,fInsu,fFSA,fBid */
$lines = file($w_file);
/* loop thru the array capturing the desired info into a new array */
$x = count($lines);
for($i=0; $i<$x; $i++) {
$temp_data = explode(",", $lines[$i]);
$data = $data . $temp_data[2] . ", " . $temp_data[3] . ", " . $temp_data[5] . "\n";
}
$new_array = explode("\n", $data);
echo "<PRE>";
print_r($new_array);
echo "</pre>";
?>

Link to comment
https://forums.phpfreaks.com/topic/260130-csv-import-array/#findComment-1333377
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.