Read a text file and transfer contents to mysql database Read a text file and transfer contents to mysql database database database

Read a text file and transfer contents to mysql database


What you may be looking for is MySQL's built-in function LOAD DATA INFILE to load a text file containing values for a database into a database.

The LOAD DATA INFILE statement reads rows from a text file into a table at a very high speed. The file name must be given as a literal string.

Example:

LOAD DATA INFILE 'data.txt' INTO TABLE my_table;

You could also specify the delimiters inside of your text-file, like so:

LOAD DATA INFILE 'data.txt' INTO TABLE my_table FIELDS TERMINATED BY '|';

Update:

Here is a full-working example, I uploaded a test data file here and here is my PHP code.

$string = file_get_contents("http://www.angelfire.com/ri2/DMX/data.txt", "r");$myFile = "C:/path/to/myFile.txt";$fh = fopen($myFile, 'w') or die("Could not open: " . mysql_error());fwrite($fh, $string);fclose($fh);$sql = mysql_connect("localhost", "root", "password");if (!$sql) {    die("Could not connect: " . mysql_error());}mysql_select_db("my_database");$result = mysql_query("LOAD DATA INFILE '$myFile'" .                      " INTO TABLE test FIELDS TERMINATED BY '|'");if (!$result) {    die("Could not load. " . mysql_error());}

Here what the table looked before running my PHP code:

mysql> select * from test;+--------+-----------+------------+| DataID | Name      | DOB        |+--------+-----------+------------+|    145 | Joe Blogs | 17/03/1954 |+--------+-----------+------------+1 row in set (0.00 sec)

And here is the result after:

mysql> select * from test;+--------+-------------+------------+| DataID | Name        | DOB        |+--------+-------------+------------+|    145 | Joe Blogs   | 17/03/1954 ||    234 | Carl Jones  | 01/01/1925 ||     98 | James Smith | 12/09/1998 ||    234 | Paul Jones  | 19/07/1923 ||    986 | Jim Smith   | 12/01/1976 |+--------+-------------+------------+5 rows in set (0.00 sec)


open txt file using fopen:

$handle = @fopen("xyz.txt", "r"); //read line one by one$values='';while (!feof($handle)) // Loop til end of file.{    $buffer = fgets($handle, 4096); // Read a line.    list($a,$b,$c)=explode("|",$buffer);//Separate string by the means of |    //values.=($a,$b,$c);// save values and use insert query at last or    // use mysql insert query here}

THATS IT


$sql = "INSERT INTO data_table (iddata, name, age) VALUES('".$a."','".$b."', **'** ".$c." **'** )";

issue is with the single quotes around $c. There is no single quotes. Add it.