Мне нужен сценарий 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 |Name |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
открыть текстовый файл с помощью 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)