Прочитать текстовый файл и передать содержимое в базу данных mysql

Мне нужен скрипт php для чтения .txt-файла.

Содержимое текстового файла выглядит так:

data.txt

145|Joe Blogs|17/03/1954 986|Jim Smith|12/01/1976 234|Paul Jones|19/07/1923 098|James Smith|12/09/1998 234|Carl Jones|01/01/1925 

Затем они будут храниться в базе данных, подобной этой

** DataID | Имя | DOB **

 234 |Carl Jones|01/01/1925 

Я был бы так благодарен, если бы кто-то мог дать мне сценарий для этого.

Обновить:

 <? $handle = @fopen("data.txt", "r"); $conn = mysql_connect("localhost","username","password"); mysql_select_db("mydatabase",$conn); 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 | echo $a."-".$b."-".$c."<br>"; $sql = "INSERT INTO data_table (iddata, name, age) VALUES('".$a."','".$b."',".$c.")"; mysql_query($sql,$conn) or die(mysql_error()); } ?> 

получите следующую ошибку ошибки в синтаксисе SQL; … для правильного синтаксиса для использования вблизи ')' в строке 1

Related of "Прочитать текстовый файл и передать содержимое в базу данных mysql"

открыть файл txt с помощью 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 } 

ЭТО ОНО

То, что вы, возможно, ищете, – это встроенная функция MySQL LOAD DATA INFILE для загрузки текстового файла, содержащего значения для базы данных в базу данных.

Оператор LOAD DATA INFILE читает строки из текстового файла в таблицу с очень высокой скоростью. Имя файла должно быть задано как литеральная строка.

Пример:

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

Вы также можете указать разделители внутри вашего текстового файла, например:

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

Обновить:

Вот полный рабочий пример, я загрузил здесь тестовый файл данных и вот мой PHP-код.

 $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()); } 

Вот как выглядела таблица перед запуском моего PHP-кода:

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

И вот результат:

 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) 
 $sql = "INSERT INTO data_table (iddata, name, age) VALUES('".$a."','".$b."', **'** ".$c." **'** )"; 

проблема связана с одинарными кавычками около $ c. Одиночных кавычек нет. Добавьте его.

@ Энтони Форлони. Ваш ответ правильный, просто добавьте вертикальную полосу [| ] в каждой последней строке каждой строки, такой как на вашем файле data.txtвведите описание изображения здесь

и отдых такой же, как и в вашем ответе. Это работает на меня …

Не забудьте добавить котировки для типа varchar для вставки данных в таблицу ….