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
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
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
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • 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.