How to import csv data into the database using php

 

To download code – Click Here

Step 1

Create a database db_test and add one table named test with the following fields

name

username

department

phone


Step 2

Create a csv file named upload_file.csv with the following content

Name

Username

Department

Phone

Jijo

1

CSE

8129894644

User 1

2

ME

1234567890

User 2

3

CE

9876543210

User 3

4

IT

2580369147


Step 3

Create one PHP page index.php and add the following code into that PHP page.

<?php

ob_start();

/********************************/

/* Code from www.jijokjose.com */

/********************************/

$databasehost = "localhost";

$databasename = "db_test";

$databasetable = "test";

$databaseusername ="root";

$databasepassword = "";

$fieldseparator = ",";

$lineseparator = "\n";

$csvfile = "upload_file.csv";

/********************************/

/* Would you like to add an ampty field at the beginning of these records?

/* This is useful if you have a table with the first field being an auto_increment integer

/* and the csv file does not have such as empty field before the records.

/* Set 1 for yes and 0 for no. ATTENTION: don't set to 1 if you are not sure.

/* This can dump data in the wrong fields if this extra field does not exist in the table

/********************************/

$addauto = 0;

/********************************/

/* Would you like to save the mysql queries in a file? If yes set $save to 1.

/* Permission on the file should be set to 777. Either upload a sample file through ftp and

/* change the permissions, or execute at the prompt: touch output.sql && chmod 777 output.sql

/********************************/

$save = 1;

$outputfile = "output.sql";

/********************************/

if(!file_exists($csvfile)) {

            echo "File not found. Make sure you specified the correct path.\n";

            exit;

}

$file = fopen($csvfile,"r");

if(!$file) {

            echo "Error opening data file.\n";

            exit;

}

 

$size = filesize($csvfile);

if(!$size) {

            echo "File is empty.\n";

            exit;

}

$csvcontent = fread($file,$size);

fclose($file);

 

$con = @mysql_connect($databasehost,$databaseusername,$databasepassword) or die(mysql_error());

@mysql_select_db($databasename) or die(mysql_error());

 

$lines = 0;

$queries = "";

$linearray = array();

$i=0;

foreach(split($lineseparator,$csvcontent) as $line) {

            ob_get_clean();

            $lines++;

            $line = trim($line," \t");

            $line = str_replace("\r","",$line);

            /************************************

            This line escapes the special character. remove it if entries are already escaped in the csv file

            ************************************/

            $line = str_replace("'","\'",$line);

            /*************************************/

            $linearray = explode($fieldseparator,$line);

            $linemysql = implode("','",$linearray);

           

            if($i++!=0)

            {

                        if($addauto)

                                    $query = "insert into $databasetable values('','$linemysql');";

                        else

                                    $query = "insert into $databasetable values('$linemysql');";

                        $queries .= $query . "\n";

            }

            @mysql_query($query);

}

@mysql_close($con);

if($save) {

            if(!is_writable($outputfile)) {

                        echo "File is not writable, check permissions.\n";

            }     

            else {

                        $file2 = fopen($outputfile,"w");

                       

                        if(!$file2) {

                                    echo "Error writing to the output file.\n";

                        }

                        else {

                                    fwrite($file2,$queries);

                                    fclose($file2);

                        }

            }   

}

echo "Found a total of $lines records in this csv file.\n";

?>


Step 4

Create an empty file output.sql then save the files upload_file.csv, output.sql and index.php into any one WAMP folder.


Step 5

Open index.php file from WAMP server

 

To download code – Click Here

 


You can leave a response, or trackback from your own site.

Leave a Reply