Welcome to Dream.In.Code
Become an Expert!

Join 150,422 Programmers for FREE! Get instant access to thousands of experts, tutorials, code snippets, and more! There are 1,100 people online right now. Registration is fast and FREE... Join Now!




how to import csv data into mysql using php

 
Reply to this topicStart new topic

how to import csv data into mysql using php, Could anyone fix my php script to import csv data and store into mysql

singhs2
3 Apr, 2008 - 03:16 AM
Post #1

New D.I.C Head
*

Joined: 22 Dec, 2007
Posts: 33



Thanked: 2 times
My Contributions
Hello! I need to open a csv file from "http://www.moneyextra.com/stocks/ftse100/ftse100.csv" and then I need to import the data into a mysql database.

I have a script which I found from the net (which can freely be used by anyone) that reads the file and stores the records into mysql.

It worked yesterday as I saw SOME of the records in the databse table but it wont work anymore. The script confirms that it found and read 106 records but when I check my database nothing is in their!

As the script won't read directly from the web, the file has been stored in a local directory folder.

CODE
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        <title>Untitled Document</title>
    </head>
    
<body>

<?php

/********************************************************************/
/* Code at [url=http://legend.ws/blog/tips-tricks/csv-php-mysql-import/]http://legend.ws/blog/tips-tricks/csv-php-mysql-import/[/url]
/* Edit the entries below to reflect the appropriate values
/********************************************************************/
$databasehost = "localhost";
$databasename = "stock_market_game";
$databasetable = "stocks";
$databaseusername ="root";
$databasepassword = "";
$fieldseparator = ",";
$lineseparator = "\n";
$csvfile = "H:\Project\htdocs\ftsetable.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 = 0;
$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();

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

    $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
   & nbsp;***************************************************************************
*********************************/
    $line = str_replace("'","\'",$line);
    / ********************************************************************************
***************************/
    
    $linearray = explode($fieldseparator,$line);
    
    $linemysql = implode("','",$linearray);
    
    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";


?>

</body>
</html>

User is offlineProfile CardPM
+Quote Post

quim
RE: How To Import Csv Data Into Mysql Using Php
4 Apr, 2008 - 02:48 PM
Post #2

D.I.C Head
Group Icon

Joined: 11 Dec, 2005
Posts: 145



Thanked: 2 times
Dream Kudos: 350
My Contributions
first you need to download the file to your web server.
then you can use these mysql command to import the data to the database.
CODE
LOAD DATA INFILE '/home/data.cvs' INTO TABLE sales
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';


check here for more info: http://dev.mysql.com/doc/refman/5.0/en/load-data.html

EDITED:
can you please not double post.
i just came across this same post in the php forum
http://www.dreamincode.net/forums/showtopic48014.htm


This post has been edited by quim: 4 Apr, 2008 - 02:53 PM
User is offlineProfile CardPM
+Quote Post

singhs2
RE: How To Import Csv Data Into Mysql Using Php
5 Apr, 2008 - 12:04 PM
Post #3

New D.I.C Head
*

Joined: 22 Dec, 2007
Posts: 33



Thanked: 2 times
My Contributions
Thanks for the advice!...and sorry about duplicating the post...I wasn't sure which section it was to be under.
User is offlineProfile CardPM
+Quote Post

Fast ReplyReply to this topicStart new topic
Time is now: 1/9/09 08:25PM

Be Social

Dream.In.Code RSS Feed Dream.In.Code LinkedIn Group Follow Us On Twitter

Live Help!

Tutorials

Programming

Web Development

Reference Sheets

Code Snippets

DIC Chatroom

Bye Bye Ads

Monthly Drawing

Thumb Drive

Top Contributors

Top 10 Kudos This Month