Мне нужен скрипт 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
открыть файл 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 для вставки данных в таблицу ….