Programming Tutorials

PHP code to import from CSV file to MySQL

By: Nate in PHP Tutorials on 2014-10-06  

After playing a while, I'm confident the following replacement function works in all cases, including the ones for which the native fputcsv function fails. If fputcsv fails to work for you (particularly with mysql csv imports), try this function as a drop-in replacement instead.

Arguments to pass in are exactly the same as for fputcsv, though I have added an additional $mysql_null boolean which allows one to turn php null's into mysql-insertable nulls (by default, this add-on is disabled, thus working identically to fputcsv [except this one works!]).

<?php 

function fputcsv2 ($fh, array $fields, $delimiter = ',', $enclosure = '"', $mysql_null = false) { 
    $delimiter_esc = preg_quote($delimiter, '/'); 
    $enclosure_esc = preg_quote($enclosure, '/'); 

    $output = array(); 
    foreach ($fields as $field) { 
        if ($field === null && $mysql_null) { 
            $output[] = 'NULL'; 
            continue; 
        } 

        $output[] = preg_match("/(?:${delimiter_esc}|${enclosure_esc}|\s)/", $field) ? ( 
            $enclosure . str_replace($enclosure, $enclosure . $enclosure, $field) . $enclosure 
        ) : $field; 
    } 

    fwrite($fh, join($delimiter, $output) . "\n"); 
} 

// the _EXACT_ LOAD DATA INFILE command to use 
// (if you pass in something different for $delimiter 
// and/or $enclosure above, change them here too; 
// but _LEAVE ESCAPED BY EMPTY!_). 
/* 
LOAD DATA INFILE 
    '/path/to/file.csv' 

INTO TABLE 
    my_table 

FIELDS TERMINATED BY 
    ',' 

OPTIONALLY ENCLOSED BY 
    '"' 

ESCAPED BY 
    '' 

LINES TERMINATED BY 
    '\n' 
*/ 

?>





Add Comment

* Required information
1000

Comments

No comments yet. Be the first!

Most Viewed Articles (in PHP )

Different versions of PHP - History and evolution of PHP

PHP Warning: Unknown(): Unable to load dynamic library '/usr/local/php4/lib/php/extensions/no-debug ......

Input Validation in PHP

Counting Lines, Paragraphs, or Records in a File using pc_split_paragraphs() in PHP

Convert a hex string into a 32-bit IEEE 754 float number in PHP

Opening a Remote File in PHP

Exception in module wampmanager.exe at 000F15A0 in Windows 8

A Basic Example using PHP in AWS (Amazon Web Services)

Decrypting files using GnuPG (GPG) via PHP

PHP INSTALLATION on Solaris 9 (Sparc)

XMLRPC for PHP - A simple client and server program

Parent: child process exited with status 3221225477 -- Restarting

Install and use PHPUnit to test your PHP pages for errors.

Using Codeigniter for PHP application development

Reading and Writing .gz files in PHP

Latest Articles (in PHP)